【问题标题】:How can I extract relation between words in a sentence using AI/ML/NLP [closed]如何使用 AI/ML/NLP 提取句子中单词之间的关系 [关闭]
【发布时间】:2021-04-18 17:43:07
【问题描述】:
举个例子:
- 我正在看坏事
- 他在看《行尸走肉》
- Deadpool 正在被我监视
在所有 3 个句子中,我想分别提取正在观看的内容(坏消息、行尸走肉、死侍)。我应该使用什么方法来实现这一目标?
【问题讨论】:
标签:
machine-learning
neural-network
nlp
artificial-intelligence
【解决方案1】:
您应该开始使用的 NLP 技术称为“依赖项解析”。有很多关于该主题的教程。 Spacy 就是这样一个 Python 库,可以为您进行依赖解析。这是一个使用 Spacy 进行依赖解析的演示 - Displacy Demo
要考虑的另一种方法是“关系提取”,专门从句子中提取 SVO(主语、动词、宾语)关系。
【解决方案2】:
这称为“命名实体识别”。
https://en.wikipedia.org/wiki/Named-entity_recognition
有很多公司和服务(几乎每个聊天机器人平台都需要这种能力,包括 dialogflow、ibm watson 等)和许多使用神经网络等的实现。
有3种基本方法:
最先进的技术:
-
使用带有标记数据的大型数据集,其中文本被标记,并为此任务训练分类算法/神经网络,例如 BILSTM 或 BERT。这也可能识别未知的电影标题,因为它们在句子中的位置和句子的其他单词。
-
训练所有词/实体(LDA,词嵌入,...)的无监督或监督表示,识别电影的集群(可能不同类型的电影在不同的集群中...)并标记使用knn或类似方法输入句子。
老派:
- 使用已知电影标题的数据集,查看电影标题是否是句子的子字符串(可以使用 Jaro-Winkler 或 Levenshtein 等字符串相似性算法使分类能够处理细微差异和错别字)。这种方法只能识别已知的电影片名(几乎每部电影的片名都可以在 IMDB 上找到)。