Учебное пособие по английскому языку MeCab для программистов, которые не - носители японского языка
Если вы инженер НЛП, работающий в Японии, вы наверняка слышали о библиотеке сегментации текста MeCab. Эта библиотека широко используется как в академических кругах, так и в промышленности Японии. А если вы не являетесь носителем японского языка, использовать этот инструмент может быть сложно, потому что документы в основном написаны на японском языке. Поэтому я пишу этот учебник, чтобы облегчить бремя.
Установка
Environment: - macOS Mojave 10.14.6 - Xcode: 11.0 - python 3 - pip 19.1
Установите MeCab и словарь. Mecab-python3 не будет работать без этих зависимостей.
$ brew install mecab $ brew install mecab-ipadic
Вы можете запустить команду mecab
, чтобы попробовать интерактивный интерфейс
$ mecab おはようございます おはよう 感動詞,*,*,*,*,*,おはよう,オハヨウ,オハヨー ござい 助動詞,*,*,*,五段・ラ行特殊,連用形,ござる,ゴザイ,ゴザイ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス EOS
Установите SWIG. Необходимо установить эту библиотеку, иначе при установке mecab-python3 возникнут ошибки.
$ brew install swig $ swig -version SWIG Version 4.0.1 Compiled with clang++ [x86_64-apple-darwin18.6.0] Configured options: +pcre Please see https://www.swig.org for reporting bugs and further information
Наконец, установите mecab-python3.
$ pip install mecab-python3
Collecting mecab-python3
Downloading https://files.pythonhosted.org/packages/97/9f/3e5755e0488f608e3c2d18a0f3524434ebf36904b8fd4eec74a3e84416a9/mecab_python3-0.996.2-cp36-cp36m-macosx_10
->
userdic =
intel.whl (14.1MB)
|████████████████████████████████| 14.1MB 2.4MB/s
Installing collected packages: mecab-python3
Successfully installed mecab-python3-0.996.2
Установка закончена. Мы можем написать сценарий, чтобы попробовать.
import MeCab mecab = MeCab.Tagger("-Ochasen") # Create a MeCab object malist = mecab.parse("NECが二位、東芝がモトローラを抜いて二年ぶりに三位になる。") # morphological analysis print(malist) # output NEC エヌイーシー NEC 名詞-固有名詞-組織 が ガ が 助詞-格助詞-一般 二 ニ 二 名詞-数 位 イ 位 名詞-接尾-助数詞 、 、 、 記号-読点 東芝 トウシバ 東芝 名詞-固有名詞-組織 が ガ が 助詞-格助詞-一般 モトローラ モトローラ モトローラ 名詞-固有名詞-組織 を ヲ を 助詞-格助詞-一般 抜い ヌイ 抜く 動詞-自立 五段・カ行イ音便 連用タ接続 て テ て 助詞-接続助詞 二 ニ 二 名詞-数 年 ネン 年 名詞-接尾-助数詞 ぶり ブリ ぶり 名詞-接尾-一般 に ニ に 助詞-格助詞-一般 三 サン 三 名詞-数 位 イ 位 名詞-接尾-助数詞 に ニ に 助詞-格助詞-一般 なる ナル なる 動詞-自立 五段・ラ行 基本形 。 。 。 記号-句点 EOS
Добавить словарь пользователя
Согласно официальному документу, есть 2 способа добавить собственный словарь, изменить системный словарь и добавить пользовательский словарь. Если мы изменим системный словарь, нам придется скомпилировать словарь и снова установить его. Поэтому мы решили добавить новый пользовательский словарь.
Определить формат
Во-первых, мы должны записать собственный словарь в файл CSV, формат выглядит следующим образом.
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音 Surface type, left context ID, right context ID, cost, part of speech, sub POS 1, sub-POS 2, sub-POS 3, conjugation type, conjugation form, original form, ruby, pronunciation
Каждая строка содержит 13 функций. Например, если мы хотим добавить слова-существительные (活用 し な い 語), такие как местоположение, имя человека, мы можем написать, как показано ниже.
工藤,1223,1223,6058,名詞,固有名詞,人名,名,*,*,くどう,クドウ,クドウ
Но если мы хотим добавить прилагательные или глагол (活用 す る 語), мы должны добавить все их тип спряжения (活用 型) и формы спряжения (活用 形 ). См. Пример прилагательного «い そ が し い» в приведенном ниже примере.
いそがしい,120,120,6078,形容詞,自立,*,*,形容詞・イ段,基本形,いそがしい,イソガシイ,イソガシイ いそがし,128,128,6080,形容詞,自立,*,*,形容詞・イ段,文語基本形,いそがしい,イソガシ,イソガシ いそがしから,136,136,6079,形容詞,自立,*,*,形容詞・イ段,未然ヌ接続,いそがしい,イソガシカラ,イソガシカラ いそがしかろ,132,132,6079,形容詞,自立,*,*,形容詞・イ段,未然ウ接続,いそがしい,イソガシカロ,イソガシカロ いそがしかっ,148,148,6078,形容詞,自立,*,*,形容詞・イ段,連用タ接続,いそがしい,イソガシカッ,イソガシカッ いそがしく,152,152,6078,形容詞,自立,*,*,形容詞・イ段,連用テ接続,いそがしい,イソガシク,イソガシク いそがしくっ,152,152,6079,形容詞,自立,*,*,形容詞・イ段,連用テ接続,いそがしい,イソガシクッ,イソガシクッ いそがしゅう,144,144,6079,形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,いそがしい,イソガシュウ,イソガシュウ いそがしゅぅ,144,144,6079,形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,いそがしい,イソガシュゥ,イソガシュゥ いそがしき,124,124,6079,形容詞,自立,*,*,形容詞・イ段,体言接続,いそがしい,イソガシキ,イソガシキ いそがしけれ,108,108,6079,形容詞,自立,*,*,形容詞・イ段,仮定形,いそがしい,イソガシケレ,イソガシケレ いそがしかれ,140,140,6079,形容詞,自立,*,*,形容詞・イ段,命令e,いそがしい,イソガシカレ,イソガシカレ いそがしけりゃ,112,112,6079,形容詞,自立,*,*,形容詞・イ段,仮定縮約1,いそがしい,イソガシケリャ,イソガシケリャ いそがしきゃ,116,116,6079,形容詞,自立,*,*,形容詞・イ段,仮定縮約2,いそがしい,イソガシキャ,イソガシキャ いそがし,104,104,6080,形容詞,自立,*,*,形容詞・イ段,ガル接続,いそがしい,イソガシ,イソガシ
Долгая гласная
Ниже демонстрируется феномен долгой гласной.
今日,,,10,名詞,副詞可能,*,*,*,*,今日,キョウ,キョー 労働,,,10,名詞,サ変接続,*,*,*,*,労働,ロウドウ,ロードー
今日 и 労 働 - форма поверхности. 10 - это стоимость. Более низкая стоимость означает, что это слово часто встречается в корпусе. 名詞 - это тег POS. 一般 - это тег sub-POS, который можно игнорировать. Последние три столбца представляют исходную форму, рубин и произношение. Знак рубина означает, как следует произносить слово. Но в реальной беседе люди обычно игнорируют гласные буквы (a e i o u, ア イ ウ エ オ по-японски), чтобы легче произносить слова. Это явление обычно встречается с долгими гласными.
В приведенном ниже примере «ウ» будет проигнорировано.
キョウ -> キョー ロウドウ -> ロードー
Романдзи слова «» - это «кё». «O» и «u» являются гласными, так что это долгий гласный звук. Когда мы произносим «今日», «u» игнорируется. Таким образом, произношение становится «кё», а «о» - долгой гласной, / uː /.
Используйте файл CSV для пополнения словаря
Для следующей демонстрации я создаю foo.csv
файл и ввожу несколько существительных.
二位,,,10,名詞,一般,*,*,*,*,*,二位,ニイ,ニイ 三位,,,10,名詞,一般,*,*,*,*,*,三位,サンイ,サンイ
Далее нам нужно скомпилировать этот CSV-файл.
Mac (установлен с Homebrew)
$ cd /home/foo/bar # the path where the foo.csv exists $
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index\ -d /usr/local/lib/mecab/dic/ipadic \ -u foo.dic \ -f utf-8 \ -t utf-8 foo.csv
reading foo.csv ... 2 emitting double-array: 100% |###########################################|
опции:
- d: каталог системного словаря
- u: имя выходного пользовательского словаря
- f: кодировка файла CSV
- t: кодировка выходного файла пользовательского словаря
Убедитесь, что пользовательский словарь создан успешно.
$ ls foo.csv foo.dic
Переместите foo.dic в новый каталог.
$ mkdir /usr/local/lib/mecab/dic/user_dict $ mv foo.dic /usr/local/lib/mecab/dic/user_dict
Далее нам нужно добавить путь к mecabrc
файлу.
vim /usr/local/etc/mecabrc
Измените, как показано ниже
; userdic = /home/foo/bar/user.dic
->
userdic =
/usr/local/lib/mecab/dic/user_dict/foo.dic
Если у вас есть несколько файлов пользовательских словарей, вы можете записать их в одну строку.
userdic =
/usr/local/lib/mecab/dic/user_dict/foo.dic, /usr/local/lib/mecab/dic/user_dict/foo2.dic, /usr/local/lib/mecab/dic/user_dict/foo3.dic
Ладно, вот и все.
Попробуйте пользовательский словарь
$ echo "NECが二位、東芝がモトローラを抜いて二年ぶりに三位になる。" | mecab NEC 名詞,固有名詞,組織,*,*,*,NEC,エヌイーシー,エヌイーシー が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 二位 名詞,一般,*,*,*,*,*,二位,ニイ,ニイ 、 記号,読点,*,*,*,*,、,、,、 東芝 名詞,固有名詞,組織,*,*,*,東芝,トウシバ,トーシバ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ モトローラ 名詞,固有名詞,組織,*,*,*,モトローラ,モトローラ,モトローラ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 抜い 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,抜く,ヌイ,ヌイ て 助詞,接続助詞,*,*,*,*,て,テ,テ 二 名詞,数,*,*,*,*,二,ニ,ニ 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ぶり 名詞,接尾,一般,*,*,*,ぶり,ブリ,ブリ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 三位 名詞,一般,*,*,*,*,*,三位,サンイ,サンイ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ なる 動詞,自立,*,*,五段・ラ行,基本形,なる,ナル,ナル 。 記号,句点,*,*,*,*,。,。,。 EOS
Мы видим, что «二 位» и «三位» распознаются как слово.
Если я хочу узнать стоимость, мы можем изменить выходной формат. %m
- это поверхностная форма, %c
- стоимость, а %H
- разделенный запятыми список POS, сопряжения, чтения и т. Д. Вы можете найти более подробную информацию в этих документах, EN версия и JP версия.
$ echo "NECが二位、東芝がモトローラを抜いて二年ぶりに三位になる。" | mecab -F '%m %c %H\n' NEC 13835 名詞,固有名詞,組織,*,*,*,* が 3866 助詞,格助詞,一般,*,*,*,が,ガ,ガ 二位 10 名詞,一般,*,*,*,*,*,二位,ニイ,ニイ 、 -2435 記号,読点,*,*,*,*,、,、,、 東芝 1426 名詞,固有名詞,組織,*,*,*,東芝,トウシバ,トーシバ が 3866 助詞,格助詞,一般,*,*,*,が,ガ,ガ モトローラ 4897 名詞,固有名詞,組織,*,*,*,モトローラ,モトローラ,モトローラ を 4183 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 抜い 7346 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,抜く,ヌイ,ヌイ て 5170 助詞,接続助詞,*,*,*,*,て,テ,テ 二 2914 名詞,数,*,*,*,*,二,ニ,ニ 年 8465 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ぶり 7451 名詞,接尾,一般,*,*,*,ぶり,ブリ,ブリ に 4304 助詞,格助詞,一般,*,*,*,に,ニ,ニ 三位 10 名詞,一般,*,*,*,*,*,三位,サンイ,サンイ に 4304 助詞,格助詞,一般,*,*,*,に,ニ,ニ なる 5063 動詞,自立,*,*,五段・ラ行,基本形,なる,ナル,ナル 。 215 記号,句点,*,*,*,*,。,。,。 EOS
Посмотрите другие мои сообщения на Medium с категориальным представлением!
GitHub: BrambleXu
LinkedIn: Xu Liang
Блог: BrambleXu
Ссылка
- Https://qiita.com/TomOse/items/90a6addda3b0419f40e3
- Https://taku910.github.io/mecab/dic.html
- Https://www.kanjifumi.jp/keyword/chi/
- Https://www.wikiwand.com/en/Vowel_length#/Phonemic_vowel_length
- Https://rooter.jp/data-format/mecab_user_dictionary/
- Https://github.com/buruzaemon/natto/wiki/Output-Formatting
- Https://taku910.github.io/mecab/format.html