вводить
SimilarVocabulary — это мой проект с открытым исходным кодом на github. Сам проект не сложен. Он использует векторы слов в НЛП для извлечения слов с высокой степенью корреляции. В проекте используется spacy, библиотека с открытым исходным кодом в НЛП. Библиотека поставляется с Обученная модель, которая может предсказывать текст на английском языке. адрес проекта:
https://github.com/wotchin/SimilarVocabulary
детали кода
Ниже мы используем эту простую демонстрацию, чтобы продемонстрировать использование библиотеки spacy и ввести код для получения похожих слов.
Загрузите модель:
nlp = spacy.load('en_core_web_lg')
скопировать код
Среди них en_core_web_log — это обученная модель, которая идет в комплекте с библиотекой.Эта модель очень большая и ее нужно скачать самостоятельно.Скрипт инициализации привожу здесь: init.sh
получить вводимый текст
Эта строка кода в основном используется для получения входного текстового содержимого, а затем предварительной обработки входного текста (в основном слов) для создания токенов:
while True:
if line != "":
words += line.replace("\n"," ")
line = f.read()
else:
break
nlp = spacy.load('en_core_web_lg')
print("modal loaded.")
tokens = nlp(words)
скопировать код
установить порог
Общий принцип применения этой библиотеки для достижения аналогичного поиска слов: через обученную модель, через вектор слов, чтобы сравнить заданное «расстояние» между двумя словами, порог, который мы даем, является линией этого «расстояния», установив это верхний предел, мы можем получить желаемый результат — слова со схожей семантикой. Кратко рассмотрим процесс установки порога:
threshold = 0.0
while threshold <= 0.0:
try:
threshold = float(input("input threshold value:"))
except:
threshold = 0.0
length = 3
try:
length = int(input("input result length:"))
except:
length = 3
скопировать код
Код очень прост: требуется пороговое значение и количество похожих слов, которые необходимо запросить.
Реализовать запрос сравнения
Логика, которую я реализовал здесь, такова: дайте корпусный набор данных, в котором собрано подавляющее большинство часто используемых английских слов, найдите в этом наборе данных результаты, имеющие значения, аналогичные словам, которые мы дали заранее, а затем выберите n лучших. Результат возвращается. Код этой части:
while True:
queue = [] #[['dog',0.1],['cat',0.2]...]
i = input("input your word:")
if i != "":
txt = nlp(i)
for token in tokens:
score = token.similarity(txt)
if score >= threshold and family_check(txt.text.strip(),token.text.strip()) < 0:
if len(queue) >= length:
index = 0 # in order to contrast
value = 1.0
for i in range(0,len(queue)):
if queue[i][1] < value:
value = queue[i][1]
index = i if value < score:
queue[index] = [token.text,score]
else:
queue.append([token.text,score])
print(queue)
скопировать код
использовать
В чем смысл нахождения похожих слов, подобных этому? Например, когда некоторые приложения для викторин, такие как очень популярные онлайн-приложения для викторин, составляют вопросы, что, если есть только один вариант и необходимо добавить три дополнительных варианта вмешательства? Подобный генератор слов можно использовать для генерации слов, которые относительно тесно связаны, например, ввод слова собака, он может вернуть для нас: свинья, кошка, повар, Его также можно использовать в сценариях ассоциативного поиска, таких как поисковые системы. Конечно, его больше применений больше, чем это, все полагаются на мозговые отверстия.