如何找出句子中是否提到了这个话题?-NLP [英] How to find if the topic is mentioned in the sentence ? - nlp

查看:0
本文介绍了如何找出句子中是否提到了这个话题?-NLP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是NLP的新手,我正在为我的问题寻找最合适的解决方案。

为了简化起见,我想从标题创建一个标记列表。

标记是预定义的,我可以轻松地标记用于培训的示例。

简单示例:

格式化示范句子&&-示范标记列表&

  • 世界上最大的大象&&[动物]
  • 我喜欢芒果和大猩猩-[动物,水果]
  • 我有3只猫和4只狗&[动物]
  • 我有糖尿病&&-[疾病]
  • 我没有糖尿病,但我有一只猫-[动物]

我不需要标签的特定值

例如tags = { Animal: Elephant }tags = [Animals]一样有用

我可以找到提取实体的唯一解决方案。我只是列出了一个火柴列表,然后尝试了所有的方法,有没有什么聪明而有效的方法来做到这一点呢?

感谢您的建议、提示和资源,祝您度过愉快的一天:)

推荐答案

您可以构建自己的自定义分类器(如polm23所建议的),但考虑到您不熟悉NLP,这可能太复杂且太耗时。

一种令人兴奋的新方法是所谓的零镜头分类。这基本上意味着您采用了一个通用的机器学习模型,该模型已由其他人以非常通用的方式预先训练用于文本分类,您只需将其应用于您的特定用例,而不必对其进行训练/微调。HuggingFaceTransformers库有一个非常易于使用的实现。这里是一个交互式web application,看看它在不编码的情况下能做什么。下面是一个Jupyter notebook,它演示了如何在Python中使用它。您只需从笔记本复制粘贴代码即可。

具体应用于您的用例,如下所示:

# pip install transformers==3.1.0  # pip install in terminal
from transformers import pipeline

classifier = pipeline("zero-shot-classification")

sequence = "The biggest elephant in the world"
candidate_labels = ["animals", "fruits", "diseases"]

classifier(sequence, candidate_labels)

# output: {'sequence': 'The biggest elephant in the world', 
# 'labels': ['animals', 'diseases', 'fruits'], 
# 'scores': [0.9948041439056396, 0.0035726651549339294, 0.0016232384368777275]}

如果希望算法为文本分配多个标签,则可以激活多标签分类,它将考虑每个文本多个标签。

sequence = "I like mangos and gorillas"
candidate_labels = ["animals", "fruits", "diseases"]

classifier(sequence, candidate_labels, multi_class=True)

# output: {'sequence': 'I like mangos and gorillas', 
# 'labels': ['animals', 'fruits', 'diseases'], 
# 'scores': [0.9978452920913696, 0.989518404006958, 0.00015786082076374441]}

=>;用您的话说:它为每个文本创建一个‘标记列表’。也就是说,对于每个预定义的标签,它都会提供一个置信度分数,然后您就可以为您的"真实标签列表"选择置信度分数最高的标签。

我测试了它,实际输出在上面的代码中。它对所有内容进行了正确分类:)

它在其他用例上尝试了它,它不是100%准确的,但它相当不错,因为代码非常简单,而且您不需要自己训练模型。 以下是details on the theory,如果您感兴趣的话。

这篇关于如何找出句子中是否提到了这个话题?-NLP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆