我正在使用 NLTK 对许多不同的文档进行一些分析。这些文档的内容意味着它们都倾向于以相同的标记结束和开始。
我将文档标记为列表列表,然后使用 BigramCollocationFinder.from_documents 创建查找器。当我按原始频率对 ngram 进行评分时,我注意到最常见的是结束字符/开始字符。这表明它正在将所有文档运行到一个文件中,并在整批文件中找到我不想要的 ngram。
代码示例:
line_tokenizer = nltk.RegexpTokenizer('\{|\}|[^,"}]+')
seqs = ["{B,C}", "{B,A}", "{A,B,C}"]
documents = [line_tokenizer.tokenize(s) for s in seqs]
finder = BigramCollocationFinder.from_documents(documents)
bigram_measures = nltk.collocations.BigramAssocMeasures()
print(finder.score_ngrams(bigram_measures.raw_freq))
这将产生以下输出:
[(('B', 'C'), 0.15384615384615385),
(('C', '}'), 0.15384615384615385),
(('{', 'B'), 0.15384615384615385),
(('}', '{'), 0.15384615384615385),
(('A', 'B'), 0.07692307692307693),
(('A', '}'), 0.07692307692307693),
(('B', 'A'), 0.07692307692307693),
(('{', 'A'), 0.07692307692307693)]
ngram }{ 出现在它不应该作为 }{ 永远不会出现在彼此旁边的列表中。
是否有其他方法可以解决此问题以避免 }{ 出现在列表中?