现在,我正在寻找一个基于下降字典的Python文本分类库,这已经有一段时间了。
我的用例如下:我将收到一个长的text,它可能会讨论一些事情,并希望提到一些预定义的entities.。
text = "Yesterday, I ate a Yelow-fruit. It was the longest fruit I ever ate."
entities = {"apple": ["pink", "sphere"], "banana": ["yellow", "tasty", "long"]}请注意拼写错误是故意的!
我的目标是有一个程序,这样,给定文本和实体dict (这将随着时间的推移而改变),程序应该输出banana.。因此,这个问题可以看作是一个基于字典的文本分类问题,其中人们将根据实体字典对文本进行分类。
最近的问题在我看来是如此标准,但我在Python中找不到下降的实现。
当然,我可以通过文本和计数词的实体发生,并最终输出最频繁的实体。但是这种方法非常简单,在实际的单词场景中,如果发生的是而不是,那么这种方法就无法生存。我希望有一种很好的方法来包含一些文本相似性度量,并允许用户选择哪些预处理是可接受的(小写,词干,停止词删除,.)。应该如何进行标记化?是否存在语义的相似性?如果存在语义相似性,是否提供了dictionay扩展算法?
到目前为止,我已经阅读了这个R博客文章,它为R中基于字典的文本分类提供了一个起点。这个datascience堆栈-exchange问题似乎也与我的相关。但所有这些都没有给出令人满意的结论。
那么,Python中是否有用于这类任务的直接库呢?
谢谢你的答复。
发布于 2022-09-13 11:09:59
您需要一个简单的解决方案,同时断言问题很复杂,相关标记的频率可能不够强,无法始终预测正确的类。您所暗示的是,您需要了解提到相关令牌的上下文,为此,您可能需要一个更复杂的解决方案。
您可以考虑使用的一个解决方案是零镜头NLP分类。
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
text = "Yesterday, I ate a yelow-fruit. It was the longest fruit I ever ate."
candidate_labels = ['banana', 'apple']
classifier(text, candidate_labels)产出如下:
{'sequence': 'Yesterday, I ate a yelow-fruit. It was the longest fruit I ever ate.', 'labels': ['banana', 'apple'], 'scores': [0.6739664077758789, 0.3260335922241211]}编辑:要将进一步的信息包含到模型中,我们可以扩展候选标签的描述:
candidate_labels = ['banana yellow tasty long', 'apple pink sphere']新的产出是:
{'sequence': 'Yesterday, I ate a yelow-fruit. It was the longest fruit I ever ate.', 'labels': ['banana yellow tasty long', 'apple pink sphere'], 'scores': [0.9392997622489929, 0.060700222849845886]}从描述性词的添加可以看出,我们两个标签的分数之间的差距已经增大了。
注意:这种基于注意力的深度学习模型使用嵌入来理解令牌之间的相似性。在这个高维空间中紧密相连的标记在语义意义上成比例地相似。即使没有指定额外的描述性词汇,模型也应该能够泛化,因为它包含了关于香蕉或苹果是什么的知识,这些知识来自数百万的文本示例。当期望模型泛化为更抽象的示例时,这是值得考虑的,例如,类可能包含产品SKU。
https://stackoverflow.com/questions/73701800
复制相似问题