Отфильтруйте теги триграмм с помощью nltk - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу выяснить триграммы корпуса, но с ограничением, что по крайней мере два слова триграмм не являются собственными существительными.Это мой код до сих пор.

def collocation_finder(text,window_size):

      ign = stopwords.words('english')


      #Clean the text
      finder = TrigramCollocationFinder.from_words(text, window_size) 
      finder.apply_freq_filter(2) 
      finder.apply_word_filter(lambda w: len(w) < 2 or w.lower() in ign)
      finder.apply_word_filter(lambda w: next(iter(w)) in propernouns)



      trig_mes = TrigramAssocMeasures()
      #Get trigrams based on raw frequency
      collocs = finder.nbest(trig_mes.raw_freq,10) 
      scores = finder.score_ngrams( trig_mes.raw_freq)

      return(collocs)

Там, где имение является списком всех имен существительных в корпусе.

Дело в том, что мое последнее слово отфильтровывает то, которое должно было удостовериться, что я не пересекаю свое ограничение.Есть идеи?

1 Ответ

0 голосов
/ 01 октября 2018

Это должно быть, вы хотите

finder.apply_ngram_filter(lambda w1, w2, w3: sum([w1 n propernouns, w2 in propernouns, w3 in propernouns]) >= 2)
...