gpt4 book ai didi

ubuntu - 在使用 UniDic 2.3.0 构建 MeCab 0.996 用户字典时,如何确定左右上下文 ID 应该是什么?

转载 作者:行者123 更新时间:2023-12-04 18:43:21 32 4
gpt4 key购买 nike

我正在尝试构建 MeCab 0.996带有 UniDic CWJ 2.3.0 的用户字典在 Ubuntu 20.10 上使用以下终端命令:

$ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/unidic/unidic-cwj-2.3.0 -u ~/foo/bar/foo.dic -f utf8 -t utf8 ~/foo/bar/foo.csv
其中 foo.csv 是:
ダイバーシティ,,,-200,名詞,普通名詞,一般,*,*,*,ダイバーシティ,ダイバーシティ-diversity,ダイバーシティ,ダイバーシティ,ダイバーシティ,ダイバーシティ,外,*,*,*,*,*,*,体,ダイバーシティ,ダイバーシティ,ダイバーシティ,ダイバーシティ,,,,,
但我得到这个错误:
dictionary.cpp(355) [cid->left_size() == matrix.left_size() && cid->right_size() == matrix.right_size()] Context ID files(/usr/local/lib/unidic/unidic-cwj-2.3.0/left-id.def or /usr/local/lib/unidic/unidic-cwj-2.3.0/right-id.def may be broken
这个 Unresolved GitHub 问题帖子似乎是相关的,但超出了我的想象: https://github.com/taku910/mecab/issues/42
我可以使用较旧的 unidic-mecab-2.1.2 构建 MeCab 用户词典:
$ /usr/local/libexec/mecab/mecab-dict-index -d ~/mecab/unidic-mecab-2.1.2_src/ -u ~/foo/bar/foo.dic -f utf8 -t utf8 ~/foo/bar/foo.csv
./pos-id.def is not found. minimum setting is used
emitting double-array: 100% |###########################################|
done!
我还可以使用 unidic-py documentation 中的 reiwa.33.csv 构建用户字典:
/usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/unidic/unidic-cwj-2.3.0 -u ~/foo/bar/reiwa33.dic -f utf8 -t utf8 ~/foo/bar/reiwa.33.csv
/usr/local/lib/unidic/unidic-cwj-2.3.0/pos-id.def is not found. minimum setting is used
reading /home/foo/bar/reiwa.33.csv ... 3
emitting double-array: 100% |###########################################|
done!
reiwa.33.csv 是:
令和,4786,4786,8205,名詞,固有名詞,一般,*,*,*,レイワ,令和,令和,レーワ,令和,レーワ,固,*,*,*,*,*,*,*,レイワ,レイワ,レイワ,レイワ,"1,0",*,*,*,*
㋿,5969,5969,2588,補助記号,一般,*,*,*,*,,㋿,㋿,,㋿,,記号,*,*,*,*,*,*,*,,,,,*,*,*,*,999999
㋿,4786,4786,3992,名詞,固有名詞,一般,*,*,*,レイワ,令和,㋿,レーワ,㋿,レーワ,固,*,*,*,*,*,*,*,レイワ,レイワ,レイワ,レイワ,"1,0",*,*,*,*
因此,两个 csv 文件之间的区别在于,在 reiwa.33.csv 中为每个表面形式(以及为一些但不是所有条目的 aType 和 lemma_id)指定了左右上下文 ID,但在 foo 中没有。 .csv。
根据 instructions对于 MeCab,mecab-dict-index 将自动分配左右 ID,这似乎是 unidic-mecab-2.1.2 的情况,但不适用于 UniDic 2.3.0。
所以,我想问题变成了:如何确定左右上下文 ID 应该是什么?某处有解释吗?

最佳答案

我能够在 this Qiita post 中找到答案.
要确定左右上下文 ID:

  • 分别查看left-id.def和right-id.def文件:
  •     $ gedit /usr/local/lib/unidic/unidic-cwj-2.3.0/left-id.def

    $ gedit /usr/local/lib/unidic/unidic-cwj-2.3.0/right-id.def
  • 找到与单词特征匹配的行。
    对于一般的外来词名词(例如,ダイバーシティ),没有
    指定重音类型 (aType) 或重音变化类型 (aConType)
    值为:
  •     left-id: 15917 名詞,普通名詞,一般,*,*,*,*,*,外,*,*,*,*,*,*

    right-id: 17160 名詞,普通名詞,一般,*,*,*,*,*,外,*,*,*,*,*,*
  • 因此 foo.csv 应该是:
  •     ダイバーシティ,15917,17160,-200,名詞,普通名詞,一般,*,*,*,ダイバーシティ,ダイバーシティ-diversity,ダイバーシティ,ダイバーシティ,ダイバーシティ,ダイバーシティ,外,*,*,*,*,*,*,体,ダイバーシティ,ダイバーシティ,ダイバーシティ,ダイバーシティ,*,*,*,*,*
  • 使用 foo.csv 中的 UniDic CWJ 2.3.0 编译 MeCab 字典,然后不会出现“left-or right-id.def may be broken error”:
  •     $ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/unidic/unidic-cwj-2.3.0/ -u ~/foo/bar/foo.dic -f utf8 -t utf8 ~/foo/bar/foo.csv
    /usr/local/lib/unidic/unidic-cwj-2.3.0/pos-id.def is not found. minimum setting is used
    reading /home/foo/bar/foo.csv ... 1
    emitting double-array: 100% |###########################################|
    done!
    注意:reiwa.33.csv 中的值似乎适用于 UniDic 2.1.2。
    关于为什么会出现 left/right-id.def 错误以及如何交换 matrix.def 中所有左右值的详细说明,请参阅 this Japanese Stack Overflow post .

    关于ubuntu - 在使用 UniDic 2.3.0 构建 MeCab 0.996 用户字典时,如何确定左右上下文 ID 应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66299029/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com