Я хочу использовать результат китайской сегментации текста jieba, чтобы получить разбор зависимостей с помощью stanfordnlp в nltk. Но, похоже, не работает.
Я попытался найти способ передачи объекта Tokenizer.cut в объект GenericCoreNLPParser.tokenize, но не удалось.
from nltk.parse.corenlp import CoreNLPDependencyParser
from nltk.tree import Tree
import jieba
parser = CoreNLPDependencyParser(url='http://localhost:9000')
s = '龙卷风的英文名是什么'
print('stanfordnlp 分词+依存句法分析 :')
print(parser.tokenize(s))
print(list(parser.tokenize(s)))
s_dep0, = parser.parse(parser.tokenize(s))
for governor, dep , dependent in s_dep0.triples():
print(governor, dep , dependent)
print('\n')
print('jieba 分词+依存句法分析 :')
print(jieba.cut(s))
print(list(jieba.cut(s)))
sdep1, = parser.parse(jieba.cut(s))
for governor, dep , dependent in sdep1.triples():
print(governor, dep , dependent)
print('\n')
print('jieba 分词+依存句法分析 :')
print(jieba.lcut(s))
sdep2, = parser.parse(jieba.lcut(s))
for governor, dep , dependent in sdep2.triples():
print(governor, dep , dependent)
Это результат:
stanfordnlp 分词+依存句法分析 :
<generator object GenericCoreNLPParser.tokenize at 0x000000000A5A9D58>
['龙卷风', '的', '英文', '名', '是', '什么']
('什么', 'PN') nsubj ('名', 'NN')
('名', 'NN') nmod:assmod ('龙卷风', 'NN')
('龙卷风', 'NN') case ('的', 'DEG')
('名', 'NN') compound:nn ('英文', 'NN')
('什么', 'PN') cop ('是', 'VC')
jieba 分词+依存句法分析 :
<generator object Tokenizer.cut at 0x000000000A5A9D58>
['龙卷风', '的', '英文名', '是', '什么']
('什么', 'PN') nsubj ('名', 'NN')
('名', 'NN') nmod:assmod ('龙卷风', 'NN')
('龙卷风', 'NN') case ('的', 'DEG')
('名', 'NN') compound:nn ('英文', 'NN')
('什么', 'PN') cop ('是', 'VC')
jieba 分词+依存句法分析 :
['龙卷风', '的', '英文名', '是', '什么']
('什么', 'PN') nsubj ('名', 'NN')
('名', 'NN') nmod:assmod ('龙卷风', 'NN')
('龙卷风', 'NN') case ('的', 'DEG')
('名', 'NN') compound:nn ('英文', 'NN')
('什么', 'PN') cop ('是', 'VC')
Я ожидаю, что слова при разборе зависимостей будут результатом сегментации текста на китайском языке Джибы.