Учебники

6) WordNet с NLTK

Что такое Wordnet?

Wordnet — это программа чтения корпусов NLTK, лексическая база данных для английского языка. С его помощью можно найти значение слов, синонимов или антонимов. Можно определить его как семантически ориентированный словарь английского языка. Он импортируется с помощью следующей команды:

from nltk.corpus import wordnet as guru

Статистика показывает, что в английском WordNet есть 155287 слов и 117659 наборов синонимов .

Различные методы, доступные в WordNet, можно найти, набрав dir (гуру)

[ ‘_LazyCorpusLoader__args’, ‘_LazyCorpusLoader__kwargs’, ‘_LazyCorpusLoader__load’, ‘_LazyCorpusLoader__name’, ‘_LazyCorpusLoader__reader_cls’, ‘__class__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘ __ge__ ‘,’ __getattr__ ‘,’ __getattribute__ ‘,’ __gt__ ‘,’ __hash__ ‘,’ __init__ ‘,’ __le__ ‘,’ __lt__ ‘,’ __module__ ‘,’ __name__ ‘,’ __ne__ ‘,’ __ne__ce ‘,’ __new__ ‘,’ __newrece, ‘__newrece,’ __new__ce ‘, __newrece,’ __new__ce ‘, __new__ce,’ __new__ce ‘, __newrece,’ __new__ ‘,’ __new__ ‘,’ __newrece, ‘__new__’, ‘__new__’, ‘__new__’, ‘__new__’, ‘__new__’, ‘__new__ce, , ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘__unicode__’, ‘__weakref__’, ‘_unload’, ‘subdir’, ‘unicode_pr

Давайте разберемся с некоторыми функциями, доступными в Wordnet:

Синсет : Он также называется набором синонимов или набором слов синонимов. Давайте проверим пример

from nltk.corpus import wordnet
syns = wordnet.synsets("dog")
print(syns)

Вывод:

[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]

Лексические отношения : это семантические отношения, которые взаимны. Если существует связь между {x1, x2, … xn} и {y1, y2, … yn}, то существует также связь между {y1, y2, … yn} и {x1, x2 ,. ..xn}. Например, синоним противоположен антониму или гипернимам, а гипоним — тип лексического понятия.

Давайте напишем программу, использующую python, чтобы найти синоним и антоним слова «active», используя Wordnet.

from nltk.corpus import wordnet
	synonyms = []
	antonyms = []

	for syn in wordnet.synsets("active"):
		for l in syn.lemmas():
			synonyms.append(l.name())
			if l.antonyms():
				 antonyms.append(l.antonyms()[0].name())

	print(set(synonyms))
	print(set(antonyms))

Вывод кода:

{‘динамический’, ‘боевой’, ‘боевой готов’, ‘active_voice’, ‘активный_агент’, ‘участвующий’, ‘живой’, ‘активный’} — синоним

{‘stative’, ‘пассивный’, ‘quiet’, ‘passive_voice’, ‘потухший’, ‘бездействующий’, ‘неактивный’} — антоним

Пояснение к коду

  1. Wordnet — это корпус, поэтому он импортирован из ntlk.corpus
  2. Список как синонимов, так и антонимов принимается за пустой, который будет использоваться для добавления
  3. Синонимы слова active ищутся в наборах синонимов модуля и добавляются в список синонимов. Тот же процесс повторяется для второго.
  4. Вывод распечатан

Вывод:

WordNet — это лексическая база данных, которая используется основной поисковой системой. Из WordNet можно рассчитать информацию о данном слове или фразе, например:

  • синоним (слова, имеющие одинаковое значение)
  • hypernyms (общий термин, используемый для обозначения класса специфики (т. е. еда — это завтрак), гипонимы (рис — это еда)
  • Холонимы (белки, углеводы входят в состав пищи)
  • меронимы (прием пищи является частью ежедневного приема пищи)

WordNet также предоставляет информацию о согласованных терминах, производных, смыслах и многом другом. Он используется, чтобы найти сходство между любыми двумя словами. Он также содержит информацию о результатах связанного слова. Короче говоря или в двух словах можно рассматривать его как словарь или тезаурус. Если углубиться в Wordnet, он разделен на четыре подсети, такие как

  1. Существительное
  2. глагол
  3. Имя прилагательное
  4. Наречие

Он может быть использован в области искусственного интеллекта для анализа текста. С помощью Wordnet вы можете создать свой корпус для проверки орфографии, языкового перевода, обнаружения спама и многого другого.

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