私は NLTK を使用して、多数の個別のドキュメントの分析を行っています。これらのドキュメントの内容は、それらがすべて同じトークンで終了および開始する傾向があることを意味します。
ドキュメントをリストのリストにトークン化し、BigramCollocationFinder.from_documents を使用してファインダーを作成します。生の頻度で ngram をスコア付けすると、最も一般的な出現は終了文字/開始文字であることがわかります。これは、すべてのドキュメントを 1 つに実行し、全体で不要な 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 }{ はリストに表示されますが、 } が隣り合って表示されることはありません。
} がリストに表示されないようにするために、この問題にアプローチする別の方法はありますか?