我正在尝试构建一个非常简单的NLP聊天(我甚至可以说伪NLP?),我想识别一个固定的意图子集(动词,情绪)和实体(产品等)
这是一种实体识别或命名实体识别,但我不确定我需要一个完整的NER解决方案来实现我想要的目标。 我不在乎这个人是否打车而不是车。他必须输入一个确切的词。所以不需要在这里处理语言。
它不需要对单词进行标识和分类,我只是在寻找一种方法,当我搜索短语时,它会返回包含if的每个单词的所有结果。
我想索引类似的内容:
want [type: intent]
buy [type: intent]
computer [type: entity]
car [type: entity]
然后用户将输入:
我想买车。
然后我将此短语发送到ElasticSearch / Solr / w.e。并且它应该返回类似下面的东西(它不必像那样结构化,但每个单词应该带有它的类型):
[
{"word":"want", "type:"intent"},
{"word":"buy", "type":"intent"},
{"word":"car","type":"car"}
]
我带来的方法是将每个单词索引为:
{
"word": "car",
"type": "entity"
}
{
"word": "buy",
"type": "intent"
}
然后我提供整个短语,用“单词”搜索。但到目前为止我没有成功,因为弹性搜索没有返回任何单词,即使短语包含被索引的单词。
使用其中一个主要搜索引擎保留此信息的任何见解/想法/提示?
如果我确实需要使用专用的NER解决方案,那么在不需要担心修改拼写错误,多语言等问题的情况下,注意这样的词语的方法是什么? 我希望仅在人员完全按原样键入意图和实体时返回结果,因此不是高级NLP解决方案。
奇怪的是我在google上找不到这个。
答案 0 :(得分:2)
我创建了一个基本的index
并索引了一些像这样的文档
PUT nlpindex/mytype/1
{
"word": "buy",
"type": "intent"
}
我使用query string
搜索短语中出现的所有字词
GET nlpindex/_search
{
"query": {
"query_string": {
"query": "I want to buy a car",
"default_field": "word"
}
}
}
默认情况下,operator
为 OR ,因此会搜索word
字段中短语中的每个单词。
这是我得到的结果
"hits": [
{
"_index": "nlpindex",
"_type": "mytype",
"_id": "1",
"_score": 0.09427826,
"_source": {
"word": "car",
"type": "entity"
}
},
{
"_index": "nlpindex",
"_type": "mytype",
"_id": "4",
"_score": 0.09427826,
"_source": {
"word": "want",
"type": "intent"
}
},
{
"_index": "nlpindex",
"_type": "mytype",
"_id": "3",
"_score": 0.09427826,
"_source": {
"word": "buy",
"type": "intent"
}
}
]
这有帮助吗?