Учебное пособие по английскому языку 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

Ссылка