#spacy #cjk
#spacy #cjk
Вопрос:
Я новичок в системе spaCy.
Возьмем этот пример-
好きになる
Токенизатор и теггер на предварительно обученных японских моделях, скорее всего, выдадут результат 好き
(существительное) に
(adp) なる
(aux). Хотя это правильно, оно не учитывает, что все это выражение является фигурой речи, которая меня интересовала бы для целей моего проекта. Я также хочу сделать так, чтобы независимо от того, каково «сопряжение» входных данных, выходные данные могли совпадать.
Добрый пользователь на форуме уже предложил это решение (имеет другой пример)
from spacy.matcher import Matcher
ja = spacy.load('ja_core_news_sm')
pattern = [{'LEMMA': '気'}, {'LEMMA': 'に'}, {'LEMMA': 'なる'}]
matcher = Matcher(ja.vocab)
matcher.add("kininaru", None, pattern)
for text in ('あの子が気になる', 'あれが気になった'):
doc = ja(text)
matches = matcher(doc)
_, start, finish = matches[0]
print(doc[start:finish])
С выводом :
気になる, 気になっ
Теперь, если бы я хотел получить вывод всех токенов в предложении, они также предложили просто объединить сущности.
Теперь, вот где я немного смущен. Этот пример: «Компонент конвейера для сопоставления сущностей и пометки пользовательскими атрибутами» кажется намного длиннее, но я не уверен, что делается дополнительно. Также кажется, что пример, который кто-то мне предоставил, в отличие от примера Spacy, изменяет выходные данные морфемизатора и токенизатора после вычислений. Но пример spacy фактически использует правила при вычислении (становится частью модели). Правильно ли я понимаю, и если да, то что мне делать, если у меня есть словарь из 10 000 или около того выражений, которые я хочу включить? Вот пример того, что я ищу.
parse("あなたは手も足も出ないんだぞ")
[("あなた", PRONOUN), ("は", PARTICLE), ("手も足も出ない", EXPRESSION), ("んだ" EXPRESSION), ("ぞ" PARTICLE)]
в отличие от вывода spacy
あなた(pronoun) は(adp) 手(noun) も(adp) 足(noun) も(adp) 出(verb) ない(aux) ん(sconj) だ(aux) ぞ(part)