Temelde ilk cümle içine metin bloğunu ayırmak gerekir. Eğer dönemleri, soru işaretleri, ünlem işaretleri ve diğer herhangi bir cümle terminatörlerinin için dışarı bakmak gerekir beri hatta İngilizce, yeterince zor bulunuyor.
Sonra tüm noktalama çıkardıktan sonra bir anda bir cümle işlemek (virgül, yarı-kolonlar, iki nokta üst üste, ve benzeri).
Eğer kelimelerin bir dizi ile kalacaksın o zaman, daha basit hale gelir:
for i = 1 to num_words-1:
for j = i+1 to num_words:
phrase = words[i through j inclusive]
store phrase
O (not düşündüğünüz kadar basit olabilir metin bloğu, ilk masaj sonra), oldukça basit bu.
Bu size her cümlede iki veya daha fazla kelime bütün ifadeler verecektir.
Böylece cümle içine ayrılık, kelimelerin içine ayrılık, noktalama çıkarılması ve zor biraz olacak ama ben size zaten takip bazı basit kurallar ilk gösterilen ettik. Geri kalan metnin bir bloğu algoritma keser her zaman eklenmelidir.
Update:
Talep olarak, burada ifadeler verir bazı Java kodu:
public class testme {
public final static String text =
"My username is click upvote." +
" I have 4k rep on stackoverflow.";
public static void procSentence (String sent) {
System.out.println ("==========");
System.out.println ("sentence [" + sent + "]");
// Split sentence at whitspace into array.
String [] sa = sent.split("\\s+");
// Process each starting word.
for (int i = 0; i < sa.length - 1; i++) {
// Process each phrase.
for (int j = i+1; j < sa.length; j++) {
// Build the phrase.
String phrase = sa[i];
for (int k = i+1; k <= j; k++) {
phrase = phrase + " " + sa[k];
}
// This is where you have your phrase. I just
// print it out but you can do whatever you
// wish with it.
System.out.println (" " + phrase);
}
}
}
public static void main(String[] args) {
// This is the block of text to process.
String block = text;
System.out.println ("block [" + block + "]");
// Keep going until no more sentences.
while (!block.equals("")) {
// Remove leading spaces.
if (block.startsWith(" ")) {
block = block.substring(1);
continue;
}
// Find end of sentence.
int pos = block.indexOf('.');
// Extract sentence and remove it from text block.
String sentence = block.substring(0,pos);
block = block.substring(pos+1);
// Process the sentence (this is the "meat").
procSentence (sentence);
System.out.println ("block [" + block + "]");
}
System.out.println ("==========");
}
}
hangi çıkışları:
block [My username is click upvote. I have 4k rep on stackoverflow.]
==========
sentence [My username is click upvote]
My username
My username is
My username is click
My username is click upvote
username is
username is click
username is click upvote
is click
is click upvote
click upvote
block [ I have 4k rep on stackoverflow.]
==========
sentence [I have 4k rep on stackoverflow]
I have
I have 4k
I have 4k rep
I have 4k rep on
I have 4k rep on stackoverflow
have 4k
have 4k rep
have 4k rep on
have 4k rep on stackoverflow
4k rep
4k rep on
4k rep on stackoverflow
rep on
rep on stackoverflow
on stackoverflow
block []
==========
Şimdi, :-) (bazıları C bir Java lehçesinde yazılmış diyebilirsiniz bu Java oldukça basit olduğunu unutmayın. Sadece nasıl istedi gibi bir cümle çıktı kelime gruplaşmalar için göstermek için anlatıyor.
Bu not Ben orijinal cevap belirtilen tüm süslü cümle algılama ve noktalama kaldırma yapmak yok.