Nis*_*wal 8 python nlp machine-learning nltk text-classification
我有一个 Twitter 用户列表 (screen_names),我需要根据他们的兴趣将他们分为 7 个预定义的类别 - 教育、艺术、体育、商业、政治、汽车、技术。我在 Python 中提取了用户的最后 100 条推文,并在清理推文后为每个用户创建了一个语料库。
如此处所述,将推文分类为(无监督数据/推文)的多个类别:
我正在尝试在每个类别下生成常用词的词典,以便我可以将其用于分类。
有没有一种方法可以自动为一组自定义单词生成这些词典?
然后我可以使用这些来使用 tf-idf 分类器对推特数据进行分类,并获得推文与每个类别的对应程度。最高值将为我们提供最可能的推文类别。
但是由于分类是基于这些预先生成的字典,我正在寻找一种方法来为自定义类别列表自动生成它们。
示例词典:
Education - ['book','teacher','student'....]
Automobiles - ['car','auto','expo',....]
Run Code Online (Sandbox Code Playgroud)
示例输入/输出:
**Input :**
UserA - "students visited share learning experience eye opening
article important preserve linaugural workshop students teachers
others know coding like know alphabets vision driving codeindia office
initiative get students tagging wrong people apologies apologies real
people work..."
.
.
UserN - <another corpus of cleaned tweets>
**Expected output** :
UserA - Education (61%)
UserN - Automobiles (43%)
Run Code Online (Sandbox Code Playgroud)
alv*_*vas 10
标签是监督机器学习所必需的。如果您没有包含 Xs(输入文本)和 Y(输出标签)的训练数据,那么 (i) 监督学习可能不是您想要的,或者 (ii) 您必须创建一个包含文本和它们对应的标签。
让我们试着把它分解,看看反映你在寻找什么。
我有一个 Twitter 用户列表(screen_names),我需要将它们分为 7 个预定义的类别 - 教育、艺术、体育、商业、政治、汽车、技术
我在 Python 中提取了用户的最后 100 条推文,并在清理推文后为每个用户创建了一个语料库。
如果你想从头开始训练一个有监督的机器学习模型,100 个数据点绝对不足以做任何事情。
另一件事是 的定义corpus。语料库是文本的主体,因此将任何字符串列表称为语料库都没有错。但是,要进行任何有监督的训练,每个文本都应带有相应的标签
现在,这是矛盾的 =)
无监督分类
是的,有“无监督学习”,这通常意味着学习输入的表示,通常输入的表示用于(i)生成或(ii)样本。
从表示生成意味着从表示创建一个数据点,该数据点类似于无监督模型从中学习的数据。在文本处理/NLP 的情况下,这通常意味着从头开始生成新句子,例如https://transformer.huggingface.co/
对表示进行采样意味着为无监督模型提供文本,并且该模型有望提供一些无监督模型从中学习的信号。例如,给定一个语言模型和一个新句子,我们想估计这个句子的概率,然后我们使用这个概率来比较不同句子的概率。
Algorithmia 有一个很好的总结博客文章https://algorithmia.com/blog/introduction-to-unsupervised-learning和更现代的观点https://sites.google.com/view/berkeley-cs294-158-sp20/home
是的,矛盾的解释还没有结束。如果我们看一下文本分类,我们到底在做什么?
我们正在将输入文本拟合到一些预定义的类别中。在您的情况下,标签是预定义的,但
问:信号究竟来自哪里?
A:当然,从推文中,不要分散我的注意力!告诉我怎么分类!!!
问:你如何告诉模型推文应该是这个标签而不是另一个标签?
A:来自无监督学习,对吧?这不是无监督学习应该做的吗?要将输入文本映射到输出标签?
确切地说,这就是矛盾,
监督学习将输入文本映射到输出标签而不是无监督学习
那么问题来了:
你有标签数据吗?
如果没有,那么如何获得标签?
如果是,那么多少钱?
他们不是使用听起来像芝麻街字符的无监督语言模型吗,例如 ELMO、BERT、ERNIE?
我猜你的意思是像https://github.com/ThilinaRajapakse/simpletransformers#text-classification
from simpletransformers.classification import ClassificationModel
import pandas as pd
# Train and Evaluation data needs to be in a Pandas Dataframe of two columns. The first column is the text with type str, and the second column is the label with type int.
train_data = [['Example sentence belonging to class 1', 1], ['Example sentence belonging to class 0', 0]]
train_df = pd.DataFrame(train_data)
eval_data = [['Example eval sentence belonging to class 1', 1], ['Example eval sentence belonging to class 0', 0]]
eval_df = pd.DataFrame(eval_data)
# Create a ClassificationModel
model = ClassificationModel('bert', 'bert-base') # You can set class weights by using the optional weight argument
# Train the model
model.train_model(train_df)
Run Code Online (Sandbox Code Playgroud)
请注意以下评论:
训练和评估数据需要位于两列的 Pandas Dataframe 中。第一列是str 类型的文本,第二列是int 类型的标签。
是的,这是更现代的方法:
请注意,您仍然无法避免需要标签来训练监督分类器的事实
热那亚。真的没有“无监督分类”这样的东西(还),不知何故(i)标签需要手动定义,(ii)输入到标签之间的映射应该存在
定义范式的正确词是迁移学习,其中语言是
以自我监督的方式学习(实际上并不是真正的无监督),以便模型学习将任何文本转换为某种数字表示
然后使用带有标记数据的数字表示来生成分类器。
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |