質問編集履歴

1 URL先のコードをもう少し追加してみたのですが、同じエラーが出てしまいました…。

aoisj

aoisj score 19

2017/10/17 17:18  投稿

gensimでの辞書作成
#困っていること
pythonのトピックモデルライブラリであるgensimの利用経験がある方に質問です。
現在、テキストファイルからコーパスを生成するために辞書を作成しようと考えています。
しかし、以下のエラーが出てしまいました。
```
TypeError: doc2bow expects an array of unicode tokens on input, not a single string
```
エラーが出たコードは以下の通りです。
```
 
# -*- coding: utf-8 -*-
import MeCab
from gensim import corpora, models, similarities
#ファイル指定
doc = input('select file(ex, ○○.txt):')
f = open(doc, "r",encoding = "utf-8")
text = f.read()
f.close()
#文字列を改行位置で区切って分割する(形態素解析)
m = MeCab.Tagger ("-Ochasen")
chunks = m.parse(text).splitlines()
#絞り結果を格納
sels = []
#絞り込み
for chunk in chunks:
   #chunk:形態素解析結果(1行の文字列)
   #タブ(\t)で区切り、文字列リストを作成
   cols = chunk.split('\t')
   if len(cols) >= 4:
       #parts[0]:品詞の種類
       parts = cols[3].split('-')
       #指定した品詞で始まっている場合 → 真
       if parts[0].startswith('名詞') or parts[0].startswith('動詞'):
           #要素(形態素)を追加
           #sels:要素(形態素)のみの行列
           sels.append(chunk[0])
print(sels)
"""print(sels)"""
#辞書作成
dictionary = corpora.Dictionary(sels)
#(単語の出現が1以下)を除く
#(単語の出現が1以下) を除く
dictionary.filter_extremes(no_below = 1)
#(辞書の単語数)次元のベクトルに変換  
corpus = [dictionary.doc2bow(sels) for sel in sels]  
#LDAモデルに投入  
lda = models.LdaModel(corpus = corpus, id2word = dictionary,  
                     #トピック数:10  
                     num_topics = 10)  
```
#やりたいこと
指定したテキストファイルから名詞と動詞のみを抜き出し、辞書を作成したいです。
参考にしたサイトのURLをいかに記します。
https://www.slideshare.net/HirofumiTsuruta/ss-71566139
私は以前作成した形態素解析を行うプログラムに追加する形で実装を試みているのですが、エラーの原因がわからないので、ご意見をいただきたいです。
調べてみると英語のものしか見つからず、辞書を初期化?するといった内容のことが書かれていたように思えますが、勘違いしている可能性が高いので、詳しく教えていただきたいです。
  • Python 3.x

    10746 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る