Можно ли добавить свою собственную WordNet в библиотеку?

У меня есть .txt файл датской WordNet. Есть ли способ использовать это с библиотекой NLP для Python, такой как NLTK? Если нет, как вы можете заниматься обработкой естественного языка на языке, который не поддерживается данной библиотекой. Также скажите, что вы хотите выполнять распознавание имен по имени на другом языке, кроме английского или голландского, в библиотеке, подобной spaCy. Есть ли способ сделать это?

Ответ 1

Есть ли способ использовать это с библиотекой NLP для Python, такой как NLTK?

Вы можете сделать это с помощью NLTK, хотя это немного неудобно.

Вам нужно будет преобразовать ваш WordNet corpus в формат Open Multilingual Wordnet, который представляет собой простой формат с разделителями табуляции. Обратите внимание, что у них уже есть датская WordNet.

Затем вы должны установить WordNet и Open Multilingual Wordnet в NLTK, если вы этого еще не сделали. Это создаст каталог типа ~/nltk_data/corpora/omw/ с поддиректорией для каждого языкового файла. Вам нужно будет добавить свой корпус, создав для него каталог и назвав свой файл следующим образом:

~/nltk_data/corpora/omw/xxx/wn-data-xxx.tab

xxx может быть любым, но должно быть одинаковым в обоих местах. Этот шаблон имени файла жестко закодирован в NLTK здесь.

После этого вы можете использовать WordNet, указав параметр xxx как lang. Вот пример из документации:

>>> wn.synset('dog.n.01').lemma_names('ita') # change 'ita' to 'xxx'
['cane', 'Canis_familiaris']

Как вы можете заниматься обработкой естественного языка на языке, который не поддерживается данной библиотекой?

Я часто делал это с японцами.

Некоторые методы заглядывают внутрь ваших жетонов - то есть, они проверяют, является ли слово буквально "сказать" или "быть" или что-то в этом роде. Это часто встречается у lematizers по понятным причинам. Некоторые системы используют правила, основанные на предположениях о том, как части речи взаимодействуют на определенном языке (обычно английском). Вы могут быть способны перевести эти ожидания на ваш язык, но обычно вы просто не можете их использовать.

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

Также скажите, что вы хотите назначить распознавание имени на языке, отличном от английского или голландского, в библиотеке, подобной spaCy. Есть ли способ сделать это?

SpaCy предоставляет пользовательскую маркировку для NER. Используя его с в противном случае неподдерживаемый язык не документируется и будет немного сложнее. Однако, поскольку вам не нужна полная языковая модель для NER, вы можете использовать NER специальный инструмент с маркированными примерами.

Здесь приведены примеры учебных данных для CRF ++ на основе формата CoNLL:

He        PRP  B-NP
reckons   VBZ  B-VP
the       DT   B-NP
current   JJ   I-NP
account   NN   I-NP
deficit   NN   I-NP
will      MD   B-VP
narrow    VB   I-VP
to        TO   B-PP
only      RB   B-NP
#         #    I-NP
1.8       CD   I-NP
billion   CD   I-NP
in        IN   B-PP
September NNP  B-NP
.         .    O

He        PRP  B-NP
reckons   VBZ  B-VP
..

Этот вид формата поддерживается несколькими CRF или другими инструментами NER. CRFSuite является одним из Python wrapper.

Для такого рода данных алгоритму все равно, что в первом столбце, поэтому поддержка языка не является проблемой.

Надеюсь, что это поможет!