Когда я использовал интеграцию nltk и standford nlp, возникла проблема, которая сбила меня с толку.
Мои среды разработки вроде этого:
Там точно существуют всевозможные банки, я почти уверен, что что-то не так с моим путем или параметрами, которые я помещаю в класс StanfordSegmenter? Пример был довольно простым, что я нашел в документе nltk 3.3, они просто добавили один параметр, "path_to_slf4j".
Итак, кто-нибудь, помогите мне :-(!
@ libingnan54321, почему вы не используете последнюю версию 3.9.1?
Не могли бы вы сначала попробовать это и предоставить результат?
segmenter_jar_file = os.path.join(standfordNlpPath,'stanford-segmenter-2018-02-27/stanford-segmenter-3.9.1.jar')
assert(os.path.isfile(segmenter_jar_file))
stanfordSegmenter = StanfordSegmenter(
path_to_jar=segmenter_jar_file,
)
Используйте новый интерфейс CoreNLPParser
.
Сначала обновите свой NLTK:
pip3 install -U nltk
Тогда еще в терминале:
# Get the CoreNLP package
wget http://nlp.stanford.edu/software/stanford-corenlp-full-2018-02-27.zip
unzip stanford-corenlp-full-2018-02-27.zip
cd stanford-corenlp-full-2018-02-27/
# Download the properties for chinese language
wget http://nlp.stanford.edu/software/stanford-chinese-corenlp-2018-02-27-models.jar
wget https://raw.githubusercontent.com/stanfordnlp/CoreNLP/master/src/edu/stanford/nlp/pipeline/StanfordCoreNLP-chinese.properties
# Download the properties for arabic
wget http://nlp.stanford.edu/software/stanford-arabic-corenlp-2018-02-27-models.jar
wget https://raw.githubusercontent.com/stanfordnlp/CoreNLP/master/src/edu/stanford/nlp/pipeline/StanfordCoreNLP-arabic.properties
Для китайцев:
# Start the server.
java -Xmx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer \
-serverProperties StanfordCoreNLP-chinese.properties \
-preload tokenize,ssplit,pos,lemma,ner,parse \
-status_port 9001 -port 9001 -timeout 15000 &
Затем в Python3:
>>> from nltk.parse import CoreNLPParser
>>> parser = CoreNLPParser('http://localhost:9001')
>>> list(parser.tokenize(u'我家没有电脑。'))
['我家', '没有', '电脑', '。']
Для арабского:
# Start the server.
java -Xmx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer \
-serverProperties StanfordCoreNLP-arabic.properties \
-preload tokenize,ssplit,pos,parse \
-status_port 9005 -port 9005 -timeout 15000
Наконец, запустите Python:
>>> from nltk.parse import CoreNLPParser
>>> parser = CoreNLPParser(url='http://localhost:9005')
>>> text = u'انا حامل'
>>> parser.tokenize(text)
<generator object GenericCoreNLPParser.tokenize at 0x7f4a26181bf8>
>>> list(parser.tokenize(text))
['انا', 'حامل']
Закрытие вопроса как решенного на данный момент =)
Пожалуйста, откройте, если есть дополнительные вопросы.
Самый полезный комментарий
Используйте новый интерфейс
CoreNLPParser
.Сначала обновите свой NLTK:
Тогда еще в терминале:
Для китайцев:
Затем в Python3:
Для арабского:
Наконец, запустите Python: