Python nltk: Find collocations without dot-separated words

Я пытаюсь найти коллокации с NLTK в тексте с помощью встроенного метода.

Сейчас у меня есть следующий пример текста (test и foo следуют друг за другом, но между ними есть граница предложения):

content_part = """test. foo 0 test. foo 1 test. 
               foo 2 test. foo 3 test. foo 4 test. foo 5"""

Результат токенизации и collocations() следующий:

print nltk.word_tokenize(content_part)
# ['test.', 'foo', 'my', 'test.', 'foo', '1', 'test.',
# 'foo', '2', 'test.', 'foo', '3', 'test.', 'foo', '4', 'test.', 'foo', '5']

print nltk.Text(nltk.word_tokenize(content_part)).collocations()
# test. foo

Как я могу предотвратить, чтобы NLTK:

  1. включал точку в мою токенизацию
  2. не находил collocations() через границы предложений?

То есть в этом примере он вообще не должен выводить коллокации, но я полагаю, вы можете представить себе более сложные тексты, где коллокации есть и внутри предложений.

Я могу предположить, что мне нужно использовать Punkt sentence segmenter, но тогда я не знаю, как снова соединить их вместе, чтобы найти коллокации с помощью nltk (collocation() кажется более могущественным, чем просто подсчет вещей самостоятельно).

5
задан vrajs5 15 November 2014 в 08:11
поделиться