В этом нет ничего специфичного для iOS. Словарь, который вы используете с mecab (возможно, ipadic), содержит запись для названия компании 吉 本 興業. Хотя обе части имени также указаны как отдельные существительные, mecab сильно предпочитает помечать составное имя как одно слово.
В Mecab отсутствует функция, позволяющая пользователю выбирать, следует ли разделять соединения на части. Обратите внимание, что такую функцию, как правило, сложно реализовать, потому что не все согласны с тем, какие соединения можно разделить, а какие - нет. Например. 容 疑 者 - это соединение, состоящее из 容 疑 и 者? С чисто морфологической точки зрения, возможно, да, но для большинства практических приложений, вероятно, нет.
Если у вас есть список соединений, которые вы хотите сегментировать, быстрое решение - создать пользовательский словарь для частей, из которых они состоят, и заставить mecab использовать его в дополнение к основному словарю.
Документацию на японском языке о том, как это сделать, можно найти здесь. В вашем конкретном примере это будет включать следующие шаги.
Сделайте пользовательский словарь с двумя записями, одна для 吉 本, а другая для 興業:
吉本,,,100,名詞,固有名詞,人名,名,*,*,よしもと,ヨシモト,ヨシモト
興業,,,100,名詞,一般,*,*,*,*,こうぎょう,コウギョウ,コウギョウ
Я подозреваю, что обе записи уже существуют в словаре по умолчанию, но, добавив их в словарь пользователя и указав относительно низкий показатель специфичности (я использовал 100
для обоих - чем ниже, тем выше вероятность разделения), вы можете заставить mecab иметь тенденцию предпочитать части целому.
Скомпилируйте пользовательский словарь:
$> $MECAB/libexec/mecab/mecab-dict-index -d /usr/lib64/mecab/dic/ipadic -u mydic.dic -f utf-8 -t utf-8 ./mydic
Возможно, вам придется отрегулировать команду. Вышеизложенное предполагает:
Mecab был установлен из исходников в $MECAB
. Если вы используете mecab, установленный менеджером пакетов, у вас могут возникнуть трудности с поиском инструмента mecab-dict-index
. Лучшая установка из исходников.
Словарь по умолчанию находится в /usr/lib64/mecab/dict/ipadic
. Это не часть пакета mecab; он поставляется как отдельный пакет (например, this), и у вас могут возникнуть трудности с его поиском.
mydic
- это имя пользовательского словаря, созданного на шаге 1. mydic.dic
- имя скомпилированного словаря, который вы получите в качестве вывода (не обязательно).
И системный словарь (опция -t
), и пользовательский словарь (опция -f
) кодируются в UTF-8. Это может быть неправильно, и в этом случае вы получите сообщение об ошибке позже, когда будете использовать mecab.
Измените конфигурацию mecab. В общесистемной установке это файл с именем /usr/lib64/mecab/dic/ipadic/dicrc
или аналогичный. В вашем случае он может быть где-то еще. Добавьте следующую строку в конец файла конфигурации:
userdic = home/myhome/mydic.dic
Убедитесь, что абсолютный путь к составленному выше словарю верен.
Если вы затем запустите mecab против вашего ввода, он разделит соединение на части (я тестировал его, используя mecab 0.994 в системе Linux).
Более тщательным решением было бы получить исходный код словаря по умолчанию и вручную удалить все составные существительные, которые вы хотите разделить, а затем перекомпилировать словарь. Как общее замечание, использование токенизатора CJK для серьезного приложения в производственном режиме в течение более длительного периода времени обычно требует регулярного обслуживания определенного словаря (добавления / удаления записей).
person
jogojapan
schedule
05.02.2013