为ML注释文本数据后如何继续?

2024-09-18 14:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在进行一个项目,我想对一些文本进行分类。为此,我首先必须对文本数据进行注释。我使用了一个web工具,现在有了相应的json文件(包含注释)和纯txt文件(包含原始文本)。 我现在想使用不同的分类器来训练数据,并最终预测期望的结果

然而,我正挣扎着从哪里开始。我还没有在网上找到我一直在寻找的东西,所以我在这里尝试

我将如何处理json和txt。文件夹?据我所知,我必须以某种方式将这些信息转换为.csv,在那里我有关于标签、文本的信息,但对于未注释的文本,“无”。所以我想这就是为什么我使用.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":[]}

每个文本都有一个classIde_1在本例中)和一个field_valuef_4在本例中给出值3)。我需要一步一步地提取它。首先用相应的文本提取实体(并在没有注释的地方添加“none”),然后在第二步用相应的文本检索字段信息。 相应的.txt文件如下所示: 这是文本

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


Tags: 文件csv数据text文本txt文件夹信息
1条回答
网友
1楼 · 发布于 2024-09-18 14:35:58

因此,假设您有一个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 json

with open('labels.json') as json_file:
    labels = json.load(json_file)
    # This results in a Python dictionary where you can look-up a label given an index.

with open(raw.txt) as txt_file:
    raw_texts = txt_file.readlines()
    # This results in a list where you can retrieve the raw text by index like this: raw_texts[index].

现在您可以将原始文本与标签进行匹配,为了便于使用,您可能希望将它们放在一个数据帧中(假设它们目前的订购方式相同):

import pandas as pd

data = pd.DataFrame(
    {'label': labels.values(),
     'text': raw_texts
    })

#    label      text
# 0  politics   Sentence_1
# 1  sports     Sentence_2
# 2  weather    Sentence_3

现在,您可以使用不同的机器学习库,但我推荐初学者使用的库肯定是^{}。它很好地解释了如何将原始文本字符串转换为机器学习可用的功能:

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技术的正确开始

相关问题 更多 >