如何在为机器学习标注文本数据后继续进行?

我目前正在进行一个项目,目的是对一些文本进行分类。为此,我首先需要对文本数据进行标注。我使用了一个网络工具来完成标注,现在我有了一个包含标注信息的JSON文件和一个包含原始文本的纯文本文件。我现在想使用不同的分类器来训练数据,并最终预测所需的结果。

然而,我不知道该从哪里开始。我在网上没有找到我想要的答案,所以我在这里尝试求助。

我该如何处理这些JSON和文本文件呢?据我所知,我需要将这些信息转换成一个.csv文件,其中包含标签、文本信息,以及未标注文本的“none”。所以我想我应该使用.txt文件,将它们与标注文件合并,以便能够检测某个文本句子(或单词)是否有标签。然后我就可以使用.csv数据将其加载到模型中了。

有人能给我一些建议,告诉我该从哪里开始或接下来该怎么做吗?我目前找到的所有资料都是关于数据已经转换并准备好预处理的情况,而我现在正为如何处理标注过程的结果而苦恼。

我的JSON文件大致如下:

{"annotatable":{"parts":["s1p1"]}, "anncomplete":true, "sources":[], "metas":{}, "entities":[{"classId":"e_1","part":"s1p1","offsets":[{"start":11,"text":"This is the text"}],"coordinates":[],"confidence":{"state":"pre-added","who":["user:1"],"prob":1},"fields":{"f_4":{"value":"3","confidence":{"state":"pre-added","who":["user:1"],"prob":1}}},"normalizations":{}},"normalizations":{}}], "relations":[]}

每段文本都有一个classId(本例中为e_1)和一个field_value(本例中f_4的值为3)。我需要一步步提取这些信息。首先提取带有相应文本的实体(并在未标注的地方添加“none”),然后在第二步中获取与相应文本相关的字段信息。对应的.txt文件非常简单,如下所示:This is the text

我所有的.json文件都放在一个文件夹中,所有的.txt文件放在另一个文件夹中。


回答:

假设你有一个JSON文件,其中标签是按你在原始txt文件中的相应行索引的:

{  0: "politics"  1: "sports",  2: "weather",}

还有一个txt文件,其中包含相应索引的原始文本:

0 The American government has launched ... today.1 FC Barcelona has won ... the country.2 The forecast looks ... okay.

那么首先,你确实需要将示例与它们的标签连接起来,然后继续对文本进行特征化并构建机器学习模型。如果你的示例像我的示例一样,通过索引或ID或任何其他识别信息对齐,你可以这样做:

import jsonwith open('labels.json') as json_file:    labels = json.load(json_file)    # 这会得到一个Python字典,你可以根据索引查找标签。with open(raw.txt) as txt_file:    raw_texts = txt_file.readlines()    # 这会得到一个列表,你可以通过索引获取原始文本,如下所示:raw_texts[index]。

现在你可以将原始文本与标签匹配起来,你可能希望将它们放入一个单一的数据框中以便于使用(假设它们目前按相同的顺序排列):

import pandas as pddata = pd.DataFrame(    {'label': labels.values(),     'text': raw_texts    })#    label      text# 0  politics   Sentence_1# 1  sports     Sentence_2# 2  weather    Sentence_3

现在,你可以使用不同的机器学习库,但对于初学者,我强烈推荐的是scikit-learn。它提供了关于如何将你的原始文本字符串转换为机器学习可用的特征的良好解释:

https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html#extracting-features-from-text-files

以及随后如何使用这些特征来训练分类器:

https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html#training-a-classifier

我展示的DataFrame应该正好适合开始测试这些scikit-learn技术。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注