первый вопрос здесь, так что несите меня, если мой этикет плохой. В настоящее время я работаю над проектом, цель которого - реализовать голосового помощника с использованием python. Нам рекомендовали использовать обработку естественного языка, чтобы помочь помощнику более эффективно анализировать проблемы, и я успешно установил для этого nltk. Я совершенно новичок в обработке естественного языка, поэтому у меня возникла некоторая путаница.
Прямо сейчас мой код будет принимать словесный ввод в mi c, например:
"what is the weather in Chicago?"
и успешно токенизируйте его, удалите стоп-слова и пометьте его следующим образом:
import nltk # importing the natural language toolkit
from nltk import word_tokenize # this allows us to tokenize a sentence
from nltk.corpus import stopwords # this allows us to filter out stopwords
# Tokenizes the sentence
tokens = word_tokenize(text)
print(tokens)
# Removes stopwords from the sentence
sWords = set(stopwords.words('english'))
cleanTokens = [w for w in tokens if not w in sWords]
print(cleanTokens)
# Tags the sentence
tagged = nltk.pos_tag(cleanTokens)
print(tagged)
# Prints fully processed sentence with tags attatched
print(nltk.ne_chunk(tagged))
Вывод:
['what', 'is', 'the', 'weather', 'in', 'Chicago']
['weather', 'Chicago']
[('weather', 'NN'), ('Chicago', 'NNP')]
(S weather/NN (GPE Chicago/NNP))
По сути, моя проблема в том, что я не уверен, куда go отсюда. На самом деле я не нашел хороших примеров того, как подобный текст можно использовать с API, чтобы фактически вернуть погоду в Chica go.
Был бы я прав, если бы просто использовал операторы if / else, как в этом псевдокоде?:
if tagged.contains("weather")
city = searchForCities(tagged)
return city.weatherReport
elif tagged.contains("time) ect...
Подводя итог, когда вы разметили / пометили текст nltk, как лучше всего код, определяющий, что делать дальше, чтобы соответствующая информация использовалась правильной библиотекой?