2017-10-09 12 views
1

現在、私はexcelファイルからテキストを読み込み、bigramを適用しています。 finalListは、以下のサンプルコードで使用されているリストを持っていますの入力ワードから読み取られたリストは入力エクセルファイルです。私は、エンドツーエンドを完了:言葉ngramを適用する前に入力テキストを理解する最善の方法

bigram=ngrams(finalList ,2) 

入力テキストの入力テキストのリストに適用さ

from nltk.corpus import stopwords 

バイグラムロジック:ライブラリーを、以下の助けを借りて、入力からストップワードを削除し

プロセス。

電流出力:終了、終了、終了プロセスが完了しました。

希望出力:エンドツーエンドのエンドツーエンドプロセスを完了しました。

つまり、(エンドツーエンド)のような単語のグループは1ワードとみなす必要があります。

+2

トークンを確認しますか? – alexis

+1

適切なトークナイザを使用してください:http://nlp.cogcomp.org/ – Daniel

答えて

1

問題を解決するには、正規表現を使用して停止語を消去する必要があります。この例を参照してください:

import re 
text = 'I completed my end-to-end process..:?' 
pattern = re.compile(r"\.*:\?*") # to remove zero or more instances of such stop words, the hyphen is not included in the stop words. 
new_text = re.sub(pattern, '', text) 
print(new_text) 
'I completed my end-to-end process' 


# Now you can generate bigrams manually. 
# 1. Tokanize the new text 
tok = new_text.split() 
print(tok) # If the size of token is huge, just print the first five ones, like this print(tok[:5]) 
['I', 'completed', 'my', 'end-to-end', 'process'] 

# 2. Loop over the list and generate bigrams, store them in a var called bigrams 
bigrams = [] 
for i in range(len(tok) - 1): # -1 to avoid index error 
    bigram = tok[i] + ' ' + tok[i + 1] 
    bigrams.append(bigram) 


# 3. Print your bigrams 
for bi in bigrams: 
    print(bi, end = ', ') 

I completed, completed my, my end-to-end, end-to-end process, 

関連する問題