Программное обеспечение, скомпилированное из источника, не работает после первого показа

Привет я пытаюсь использовать часть японского программного обеспечения обработки естественного языка под названием MeCab, записанный в Python и распределенный только с источником. (http://taku910.github.io/mecab/)

Это давало мне проблему с первого дня. У меня нет проблемы с помощью него под окна 7 машин, которые установили программное обеспечение с exe. Однако версия человечности, которую я скомпилировал из источника, время от времени не работает.

Я также спросил в Stackoverflow, но ни у кого нет подсказки.

У меня есть некоторое открытие сейчас, и я хочу спросить, знают ли какие-либо парни здесь, как определить проблему.

Это программное обеспечение работает просто великолепно прямо после того, как оно было установлено, для только один раз. Затем не работает и бросает ошибку в код:

Traceback (most recent call last):
  File "japan_text_analysis.py", line 304, in <module>
    result = Jp.main()
  File "japan_text_analysis.py", line 49, in main
    tagged_text_tp = self.parse_text(text)
  File "japan_text_analysis.py", line 33, in parse_text
    word = parsed.surface
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xad in position 1: invalid start byte

Я мог разрешить эту проблему путем выполнения следующего в его исходном каталоге (где я получил эту команду: https://qiita.com/junpooooow/items/0a7d13addc0acad10606):

nkf -w --overwrite *.csv
nkf -w --overwrite *.def

и установите его снова:

 ./configure --with-charset=utf8
 make
 sudo make install

Скажите мне, где я могу искать его скомпилированный код или везде, где он установил себя в машине? Поскольку я знаю немного вещей о компиляции программного обеспечения Linux.

Я использую Ubuntu 16.04 LTS 64 бита.Спасибо!

0
задан 22 June 2018 в 22:16

2 ответа

Вы не должны компилировать пакет собой. Удалите его с

cd mecab-0.996
sudo make uninstall

и затем возобновите deb-пакет mecab из репозитория. Это имеет точно те же 0,996 версии как Ваше очень старание скомпилировать...

гостеприимный (16.04LTS) (misc): японская система морфологического анализа [вселенная]
0.996-1.2ubuntu1: amd64 arm64 armhf i386 powerpc ppc64el s390x

Приложение Nkf упаковывается как nkf также. Таким образом, решение просто:

sudo apt-get install mecab nkf

Примечание: можно интересоваться другими mecab-связанными пакетами (вывод от apt-cache search mecab):

darts - C++ Template Library for implementation of Double-Array
groonga-tokenizer-mecab - MeCab tokenizer for Groonga
libmecab-dev - Header files of Mecab
libmecab-java - mecab binding for Java - java classes
libmecab-jni - mecab binding for Java - native interface
libmecab-perl - mecab binding for Perl
libmecab2 - Libraries of Mecab
libtext-mecab-perl - alternate MeCab Interface for Perl
mecab - Japanese morphological analysis system
mecab-ipadic - IPA dictionary compiled for Mecab
mecab-ipadic-utf8 - IPA dictionary encoded in UTF-8 compiled for Mecab
mecab-jumandic - Juman dictionary compiled for Mecab
mecab-jumandic-utf8 - Juman dictionary encoded in UTF-8 compiled for Mecab
mecab-naist-jdic - free Japanese Dictionaries for mecab (replacement of mecab-ipadic)
mecab-naist-jdic-eucjp - free Japanese Dictionaries for mecab (replacement of mecab-ipadic) in EUC-JP
mecab-utils - Support programs of Mecab
open-jtalk - Japanese text-to-speech system
open-jtalk-mecab-naist-jdic - NAIST Japanese Dictionary for Open JTalk
python-mecab - mecab binding for Python
ruby-mecab - mecab binding for Ruby language
unidic-mecab - free Japanese Dictionaries for mecab
3
ответ дан 29 October 2019 в 01:59

Я не нашел решение, непосредственно отвечающее на мой собственный вопрос, но я нахожу способ работать вокруг этого.

Я пришел к заключению, что проблема связана с путем mecab, обрабатывают кодирование utf8, это принимает значение по умолчанию euc-мировому-судье, кодирующему. Также существует ошибка, которые вызывают UnicodeDecodeError и в Интернете существует решение.

Подвести итог его:

  • Нужно установить mecab и словарь IPA с utf8 конфигурацией. Если Вы завинчиваете, то "sudo делают удаление".

Существует ошибка, которые вызывают UnicodeDecodeError, существует способ решить это (https://qiita.com/kasajei/items/0805b433f363f1dba785):

import MeCab
mecab = MeCab.Tagger()
mecab.parse("")  # This line is solution
node = mecab.parseToNode("すもももももももものうち")
while node:
    print(node.surface)
    node = node.next

Просто добавьте первую строку, которые анализируют пустую строку прежде, чем проанализировать что-либо, и MeCab работал бы просто великолепно.

0
ответ дан 29 October 2019 в 01:59

Другие вопросы по тегам:

Похожие вопросы: