使用nltk过滤Trigram标签

时间:2018-09-30 17:15:07

标签: python nlp nltk collocation

我想找出一个语料库的三元组,但要限制三元组中的至少两个单词不是专有名词。到目前为止,这是我的代码。

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 :(得分:1)

这应该是您想要的

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