Код: Выделить всё
başlar
_______________|________
| | taklit
| | ________|_________
| sanatçı | | sanatçıları
| | | | |
işe Her başlangıçta ederek büyük
Код: Выделить всё
from __future__ import unicode_literals
from nltk.util import ngrams
from nltk import word_tokenize
import nltk
from nltk.tree import Tree, collapse_unary, chomsky_normal_form, un_chomsky_normal_form
from copy import deepcopy
import numpy
from pyparsing import *
import ast
import spacy
from nltk import Tree
import spacy
# import spacy_transformers
from spacy.lang.tr.examples import sentences
from spacy import displacy
import spacy.lang.tr
# from array import *
import array
nlp = spacy.load(
r"C:\ProgramData\anaconda3\envs\b\Lib\site-packages\tr_core_news_trf\tr_core_news_trf-3.4.2")
def to_nltk_tree(node):
if node.n_lefts + node.n_rights > 0:
return Tree(node.orth_, [to_nltk_tree(child) for child in node.children])
else:
return node.orth_
query = u'Her sanatçı başlangıçta büyük sanatçıları taklit ederek işe başlar'
doc = nlp(query)
[to_nltk_tree(sent.root).pretty_print() for sent in doc.sents]
for i1 in range(7):
span = doc[doc[i1].left_edge.i: doc[i1].right_edge.i+1]
with doc.retokenize() as retokenizer:
retokenizer.merge(span)
for token in doc:
print(token.lower_)
ее санация
başlangıçta
получите санаторий
taklit
ederek
ишебашлар
здесь, как вы можете видеть, «büyük sanatçıları taklit ederek» должно быть вместе.
Но он анализирует его отдельно. Рисунок дерева показывает, что они связаны, но когда я повторно токенизирую вывод, результат оказывается не таким, каким должен быть.
Что-то не так с охватом, но я не могу это найти...
Подробнее здесь: https://stackoverflow.com/questions/792 ... -nltk-tree
Мобильная версия