为 ML 注释文本数据后如何进行?

How to proceed after annotating text data for ML?

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

但是,我正在纠结于从哪里开始。我还没有真正在互联网上找到我一直在寻找的东西,所以这就是我在这里尝试的原因。

我将如何处理 json 和 txt。文件?据我所知,我必须以某种方式将这些信息转换为 .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_valuef_4 在本例中为值 3) .我需要一步一步地提取它。首先提取具有相应文本的实体(并在没有注释的地方添加“none”),然后在第二步中检索具有相应文本的字段信息。 对应的.txt文件就是这么简单: 这是正文

我将所有 .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 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

现在,您可以使用不同的机器学习库,但我向初学者推荐的绝对是 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 技术。