2016-08-11 5 views
1

コーパスから複数の行でバイグラムを生成しようとしています。ビッグラムは改行を超えて作成されます。これは、各行が独自のコンテキストを表し、後続の行には関係しないため、問題です。その結果、意味的に不正確なバイグラムが生じる。複数のコーパスを持つコーパスからNLTKを使用してバイグラムを作成する

コーパス

Reeves Acrylfarbe 75Ml Ultramarin 
Acrylfarbe Deep Peach 
Reeves Acrylfarbe 75Ml Grasgrün 
Acrylfarbe Antique Go 

例問題のバイグラムのため

'Ultramarin Acrylfarbe'、 'GrasgrünAcrylfarbe'

これは私が使用していたコードです:

finder = BigramCollocationFinder.from_words(word_tokenize(corpus)) 
bigrams = finder.nbest(bigram_measures.likelihood_ratio, 100) 

2行にまたがるバイグラムを省略することはできますか?

答えて

0

私は別に、その後のすべてのラインをラインおよびプロセスのリストを取得し、私はこのような何かが動作するはずと信じてバイグラム

+0

を持っていました同じアイデアですが、nltk.collocations.BigramCollocationFinderオブジェクトを返すBigramCollocationFinderを使用してこれを行う方法がわかりません – Jabb

+0

'bigram_measures'が' nltk.collocations.BigramAssocMeasures'のインスタンスであると仮定します。 'bigrams'は単なるタプル/ペアのリストです。だからあなたはそれを初期化してから、 'extend'を使って各行から新しいバイグラムを追加します – ChE

0

のリストを結合するためには「\ n」の上splitを使用します。

finder = nltk.BigramCollocationFinder.from_documents([ 
    nltk.word_tokenize(x) for x in corpus.split('\n')]) 
bigrams = finder.nbest(bigram_measures.likelihood_ratio, 100) 
関連する問題