2012-04-23 2 views
2

私はエキス、私はストップワードを削除する必要がある前処理のビットを詳述すると、FCMなどと潜在ディリクレ配分などより良い前処理ライブラリまたはPythonでの実装?

のような他のトピックモデリング手法のような分類技術を適用することができるようにいくつかのテキスト文書を事前処理する必要があります名詞とキーワードを入力し、ステミングを実行します。私はこの目的のために使用されるコードは次のとおりです。

#-------------------------------------------------------------------------- 
#Extracting nouns 
#-------------------------------------------------------------------------- 
for i in range (0,len(a)) : 
    x=a[i]   
    text=nltk.pos_tag(nltk.Text(nltk.word_tokenize(x))) 
    for noun in text: 
     if(noun[1]=="NN" or noun[1]=="NNS"): 
      temp+=noun[0] 
      temp+=' ' 
documents.append(temp) 
print documents 

#-------------------------------------------------------------------------- 
#remove unnecessary words and tags 
#-------------------------------------------------------------------------- 

texts = [[word for word in document.lower().split() if word not in stoplist]for document in documents] 
allTokens = sum(texts, []) 
tokensOnce = set(word for word in set(allTokens) if allTokens.count(word)== 0) 
texts = [[word for word in text if word not in tokensOnce]for text in texts] 
print texts 

#-------------------------------------------------------------------------- 
#Stemming 
#-------------------------------------------------------------------------- 

for i in texts: 
    for j in range (0,len(i)):   
     k=porter.stem(i[j]) 
     i[j]=k 
print texts 

私は上記のコードの問題は、名詞と、キーワードを抽出するために使用されるNLTKモジュールは、多くの単語が含まれていません

  1. です。 たとえば、前処理はいくつかの文書で実行され、「Sachin」のような名前はキーワードとして認識されず、前処理後には見逃されました。
  2. 単語が適切に幹譜されていません。あまりにも多くのステミング(ネットとネットワーキング)があり、名詞もいくつか残されています。

必要な機能のモジュールがありますか、それとも同じモジュールの実装が改善されていますか? ようこそ

答えて

関連する問題