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

我目前正在进行一个项目,目的是对一些文本进行分类。为此,我首先需要对文本数据进行标注。我使用了一个网络工具来完成标注,现在我有了一个包含标注信息的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

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

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