Chatbots中的人工智能

时间:2016-07-18 16:12:32

标签: machine-learning nlp artificial-intelligence bots

我正在研究机器人与客户互动的聊天机器人。我想建立一个智能的,类似AI的机器人。

我已经做了一点但我很感激有关改进的建议。

如果客户输入:

A) I want to know the cost of XXX car.
B) Send me the price of car XXX.
C) What is the cost of XXX car?
D) Specifications of XXX car

我如何构建机器人以便它能够恢复这些答案?如果我匹配一个完整的句子,那么它将无效。

我的客户可以写任何东西,可以提出任何问题。请问,有人可以帮助确保机器人能够理解同一查询的不同用法吗?

提前致谢。

4 个答案:

答案 0 :(得分:5)

使用任何现有的NLP库(如OpennlpStanfordNlp)进行POSTagging或用户输入的情绪分析,以获取汽车的名称(如示例中所述)或了解任何部分这句话。

您可以找到许多基本支持herehere

答案 1 :(得分:0)

这个问题需要语义分析,但我相信像Wit.ai这样的服务可以解决你的问题,而无需转向更复杂的解决方案。

答案 2 :(得分:0)

Bot Framework使得回答和回复这些类型的查询变得非常简单。您甚至可以将认知服务集成到NLP中:

https://docs.botframework.com/en-us/bot-intelligence/language/#navtitle

答案 3 :(得分:0)

您可以使用NLP并尝试分析您的A到D示例,并将它们与某些预定义答案进行匹配。

例如:

使用在短句(https://gate.ac.uk/wiki/twitter-postagger.html)中运行良好的模型,如推文和在句子中进行一些清理以消除不必要的噪音后,您得到的结果如下。汽车的模型被标记为专有名词,汽车和成本作为名词等。了解这一点,您可以比以前更好地过滤/匹配问题到您预定义的答案。

{'car': 'NN', 'cost': 'NN', 'know': 'VBP', 'want': 'VBP', 'XXX': 'NNP'}

使用带有nltk库的自定义模型的示例是:

from nltk.tag import pos_tag

def pos_tag_sentence(sentence):
    """Takes a list of words and returns their matching part of speech"""

    default_tagger = nltk.data.load(nltk.tag._POS_TAGGER)
    train_model = g.train_model # the custom model as a dictionary
    tagger = nltk.tag.UnigramTagger(model=train_model, backoff=default_tagger)  # Unigram works best in short text
    return dict(tagger.tag(sentence))

为了更进一步,如果你有一个由示例问题和匹配答案组成的数据集,你可以尝试使用监督学习算法,例如使用词性和单词作为特征(scikit-learn是一个伟大的图书馆)。

简而言之,要尽可能好地完成它需要时间和考验,而且对于这类问题没有一个好的解决方案。

希望这有帮助, 祝你好运!

编辑:我刚刚注意到你没有提到特定的编程语言,但我的例子是Python。虽然有许多优秀的图书馆,所以只需搜索并尝试:)