SamuraiT / mecab-python3

:snake: mecab-python. you can find original version here:http://taku910.github.io/mecab/
https://pypi.python.org/pypi/mecab-python3
Other
541 stars 51 forks source link

Got StopIteration Error when return it in generator #6

Closed david30907d closed 6 years ago

david30907d commented 6 years ago

This one works

article = 'MeCabはオープンソースの形態素解析エンジンで、奈良先端科学技術大学院大学出身、現GoogleソフトウェアエンジニアでGoogle 日本語入力開発者の一人である工藤拓[1][2]によって開発されている。名称は開発者の好物「和布蕪(めかぶ)」から取られた。\n開発開始当初はChaSenを基にし、ChaSenTNGという名前で開発されていたが、現在はChaSenとは独立にスクラッチから開発されている。ChaSenに比べて解析精度は同程度で、解析速度は平均3-4倍速い。\n品詞情報を利用した解析・推定を行うことができる。MeCabで利用できる辞書はいくつかあるが、ChaSenと同様にIPA品詞体系で構築されたIPADICが一般的に用いられている。\nMeCabはGoogleが公開した大規模日本語n-gramデータの作成にも使用された[3]。\nMac OS X v10.5及びv10.6のSpotlightやiPhone OS 2.1以降の日本語入力にも利用されている[4][5]。'

import MeCab
mecab = MeCab.Tagger("-Ochasen")
def ja(article):
    for line in article.split('。'):
        line = line.strip()
        if line:
            yield [i.split('\t')[0] for i in mecab.parse(line).split('\n')[:-2]]

for i in ja(article):
    print(i)

but when i put mecab = MeCab.Tagger("-Ochasen") into function ja like this:

def ja(article):
    mecab = MeCab.Tagger("-Ochasen")
    for line in article.split('。'):
        line = line.strip()
        if line:
            yield [i.split('\t')[0] for i in mecab.parse(line).split('\n')[:-2]]

error occurs:

StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: <built-in function delete_Tagger> returned a result with an error set

any idea?

sshojiro commented 6 years ago

@david30907d I happen to find this issue. Your problem looks similar to this: https://github.com/tensorflow/tensorflow/issues/830 According to the issue, the version of swig is inappropriate. And the solution seems to be introduced in https://github.com/swig/swig/pull/560.

However, I'm sorry that I don't know how we could update the version of swig for this MeCab python binding.

Besides, I reproduced your problem in my env w/ python 3.6.1.

david30907d commented 6 years ago

thanks for your reply~ @sshojiro I'll take a look at those issues thanks for your help

zackw commented 6 years ago

We are no longer shipping any SWIG-generated code. Your test works for me with the current version of the module, compiled using SWIG 3.0.12 and libmecab 0.99.6.