1

我正在开发一个应用程序,我想使用自然语言处理从文本中推断出一般类别。我是自然语言处理 (NLP) 的新手。

Google Natural Language API 使用一组合理的高级内容类别(例如“/Arts & Entertainment”、“/Hobbies & Leisure”等)来做到这一点:

https://cloud.google.com/natural-language/docs/categories

我希望使用开源来做到这一点,并希望使用一些通用类别,例如 Wikipedia 高级分类:

https://en.wikipedia.org/wiki/Category:Main_topic_classifications

fasttext 似乎是一个不错的选择,但我正在努力寻找用于培训的语料库。我确实看到了维基百科词向量文件,并且可以获得完整的维基百科下载,但我没有看到一种简单的方法来获取带有 fasttext 类别标签的文章。

是否有一些开源工具可以识别给定一些文本的高级通用类别——或者是否有我可以使用的训练数据集?

4

2 回答 2

2

我建议使用HuggingFace Transformers 库中的“零样本分类”管道。它非常易于使用并且具有不错的准确性,因为您不需要自己训练任何东西。这是一个交互式Web 应用程序,无需编码即可查看它的功能。这是一个Jupyter 笔记本,它演示了如何在 Python 中使用它。您可以从笔记本中复制粘贴代码。

这看起来像这样:

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

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

sequence = "I like just watching TV during the night"
candidate_labels = ["arts", "entertainment", "politics", "economy", "cooking"]

classifier(sequence, candidate_labels)

# output: 
'labels': ['entertainment', 'economy', 'politics', 'arts', 'cooking'],
'scores': [0.939170241355896, 0.13490302860736847, 0.011731419712305069, 0.0025395064149051905, 0.00018942927999887615]

如果您有兴趣,这里有关于理论的详细信息。

于 2020-11-04T21:06:06.070 回答
1

我认为您要寻找的是一个已经免费训练的模型,该模型具有可以对文本进行分类的一般类别。但这很难找到,因为类别的性质,通常是像Google Cloud Natural Language API这样的服务。

在这一点上,我认为你有两个选择:

  1. 使用 Google Cloud Natural Language API 之类的服务,这是一项为您提供已经用数百万个数据点训练的模型的服务,您可以将其集成到您的应用程序中,只需要考虑定价

  2. 您首先需要收集所需的数据集,其中包含您要分类的所有文本、这些文本所在的类别(或根据文本操作数据集以添加所需的类别),然后您可以使用SpaCy等库或NLTK来操作数据并训练您的模型进行文本分类。

于 2020-11-04T17:48:35.090 回答