は、テキストのコーパスで見つかったトップn
最も一般的なバイグラムの、top_n
、私はタプルのリストを持っていると言う:NLTKを使ってバイグラムを置き換えるには?
import nltk
from nltk import bigrams
from nltk import FreqDist
bi_grams = bigrams(text) # text is a list of strings (tokens)
fdistBigram = FreqDist(bi_grams)
n = 300
top_n= [list(t) for t in zip(*fdistBigram.most_common(n))][0]; top_n
>>> [('let', 'us'),
('us', 'know'),
('as', 'possible')
....
は今、私はとtop_n
にバイグラムある単語のセットのインスタンスを交換したいですそれらの連結は、である。例えば、我々は文字列のリストであるquery
新しい変数を持っていると言う:
query = ['please','let','us','know','as','soon','as','possible']
は、所望の動作後
['please','letus', 'usknow', 'as', 'soon', 'aspossible']
なります。より具体的には、query
のすべての要素を検索し、i番目と(i + 1)番目の要素がtop_n
にあるかどうかを確認したいと思います。そうである場合は、query[i]
とquery[i+1]
を連結した1つのバイグラムで置き換えます。つまり、(query[i], query[i+1]) -> query[i] + query[i+1]
です。
NLTKを使用してこれを行う方法はありますか、query
の各単語をループする必要がある場合は、これを行う最もよい方法は何ですか?
私はあなたの入力が間違っていると感じている、クエリはバイグラムのリストではありません。 – Arne
でない場合、 '[token_1のトークン+1トークン2、zipのトークン2(クエリ[: - 1]、[] '' +クエリ[2:])] ' – Arne
あなたの出力には、 。正確に何をしたいのですか?それは連結されたバイグラムのリストではありません:< – Arne