Open nekomimimaiden257 opened 3 years ago
辞書エントリまたはサイズの問題か,環境の問題かを切り分ける必要がありそうです。
問題が解決できれば、辞書は数千万行以上にする予定です。
理論上はユーザー辞書の行数に上限はありませんが,現実的に数千万件を扱うのは,ビルド時間,実行時の解析時間の両面において厳しいかもしれません。実績があるのは数百万件程度です(そのくらいでも解析時間は遅くなります)。
- 失敗するユーザー辞書の行は特定できるでしょうか?その行だけをユーザー辞書に与えても失敗しますか?
- 64bit版 Python で実行するとどうでしょうか?
調べてみました。
32bit Python2.7の場合
64bit Python2.7の場合
Janomeのfst.pyにprint文を入れた最後10行分の結果を記します。
num: 33440 i: 0
<janome.fst.State object at 0x05593760>
num: 33441 i: 0 r
<janome.fst.State object at 0x055937D8>
num: 33442 i: 0 a
<janome.fst.State object at 0x05593850>
num: 33443 i: 0 l
<janome.fst.State object at 0x055938C8>
num: 33444 i: 0 u
<janome.fst.State object at 0x05593940>
num: 33445 i: 0 c
<janome.fst.State object at 0x055939B8>
num: 33446 i: 0 i
<janome.fst.State object at 0x05593A30>
num: 33447 i: 0 m
<janome.fst.State object at 0x05593AA8>
num: 33448 i: 0 a
<janome.fst.State object at 0x05593B20>
num: 33449 i: 0 r
<janome.fst.State object at 0x05593B98>
num: 33450 i: 0 「
<janome.fst.State object at 0x062BDD78>
Traceback (most recent call last):
File "janome_make_usrdic_v1.py", line 168, in <module>
user_dict = UserDictionary( in_filename, char_code , dic_form , sysdic.conne
ctions)
File "C:\Python27\lib\site-packages\janome\dic.py", line 393, in __init__
compiledFST, entries = build_method(user_dict, enc)
File "C:\Python27\lib\site-packages\janome\dic.py", line 413, in buildipadic
compiledFST = compileFST(fst)
File "C:\Python27\lib\site-packages\janome\fst.py", line 323, in compileFST
assert next_addr is not None
AssertionError
IPA辞書形式のCSVファイルを分割して1つの辞書フォルダーへ保存すると言った回避は可能ですか?
問題が解決できれば、辞書は数千万行以上にする予定です。
理論上はユーザー辞書の行数に上限はありませんが,現実的に数千万件を扱うのは,ビルド時間,実行時の解析時間の両面において厳しいかもしれません。実績があるのは数百万件程度です(そのくらいでも解析時間は遅くなります)。
解析にかかる時間が2週間程度であれば、コンピュータ動かしっぱなしにすればよいので、問題ありません。
遅くなってすみません。10000件程度なら登録できるはずなので,データに依存する不具合かもしれないですね。 公開可能なものであれば手元で再現させてみます。公開不可能なデータであれば対応は難しそうです。
遅くなってすみません。10000件程度なら登録できるはずなので,データに依存する不具合かもしれないですね。 公開可能なものであれば手元で再現させてみます。公開不可能なデータであれば対応は難しそうです。
関係者に確認を取って、載せても構わないとのことでしたので添付いたします。
あまり広めないでほしいとの要望がありましたので、取り扱いにご注意をお願いいたします。(取得後はオーナー権限で添付を削除しても構いません。) 文字コードはCP932形式で、拡張子はGithubがCSV形式をアップロードできないそうなので、txtにしています。csvに直してから使ってください。
一応、mecab-dict-index でユーザー辞書の生成ができることを確認しています。
en: When I try to create a user dictionary using Janome's API, UserDicitionary (), I encountered /lib/site-packages/janome/fst.py compileFST assert next_addr is not None error message with The stack trace is output.
Then the user dictionary cannot be created.
How can I generate a dictionary?
The original data to be used as a user dictionary is in IPA dictionary format. I wrote data check function in same python code. check function says all the lines has 12 commna . so I think The CSV file in IPA dictionary format is ready.
The CSV file is as follows. <About 20 characters mixed with numbers, symbols and alphabets>快特,-1,-1,1000,名詞,固有名詞,一般,,,,快特,, <About 20 characters mixed with numbers, symbols and alphabets>特快,-1,-1,1000,名詞,固有名詞,一般,,,,特快,, About 20,000 words below.
I can register up to about 9,000 words without any problems. If the problem can be solved, the dictionary will have more than tens of millions of lines.
ja( 日本語 ):
Janome の API 、UserDicitionary() を使用してユーザー辞書を作成しようとすると、 <pythonインストール先>/lib/site-packages/janome/fst.py compileFST assert next_addr is not None と言うスタックトレースが出力されて、ユーザー辞書の作成ができません。 どうすれば、辞書が生成できるでしょうか。
ユーザー辞書にする元データは、IPA辞書形式です。 APIを記載したpythonソースコード内で入力ファイルの,(カンマ)の数を数えると全ての行が12個なので、IPA辞書形式のCSVファイルは出来ているかと思います。
CSVファイルは、以下の要領です。 <数字・記号・アルファベット混じりの20文字ぐらい>快特,-1,-1,1000,名詞,固有名詞,一般,,,,快特,, <数字・記号・アルファベット混じりの20文字ぐらい>特快,-1,-1,1000,名詞,固有名詞,一般,,,,特快,, 以下2万語程度
9千語ぐらいまでは、問題なく登録できます。 問題が解決できれば、辞書は数千万行以上にする予定です。
Environment: Janome 3.10 python 2.7.18 32bit Windows 8.1 64bit