需要帮助编写修改 txt 文件内容的代码,然后将其另存为 json 文件中的字典(其中包含情绪数据)



我有一些句子保存在txt文件中,以及它们相应的情绪。它旨在训练机器学习分类器。但是,我想重组 txt 文件的内容,然后将其另存为 json。下面我将解释我想要的前后结构。

txt 文件以以下格式保存:

FIRST LINE OF TEXT .@negative
SECOND LINE OF TEXT .@neutral

如您所知,每个句子都保存在单独的行上,后跟一个空格,后跟一个分隔符(在本例中为 .@(,后跟为句子分配的情绪。

这是我在 json 文件中想要的格式:

[{'message_body': 'FIRST LINE OF TEXT', 'sentiment': -1}, {'message_body': 'SECOND LINE OF TEXT', 'sentiment': 0}]

所以这里我们有一个开括号,后跟一个带有 2 个键(消息正文和情绪(的字典,其中消息正文键包含文本句子,情绪键包含情绪的数值(负为 -1,正为 1,中性为 0(。因此,它实际上被保存为字典列表,每个字典对应于原始txt文件中的1行。

有谁知道我可以编写代码来为我执行此操作的方法?我假设这将是某种 for 循环,但字典不是我的强项。提前感谢!

编辑:在将txt文件另存为csv后,想出了一种有点冗长的方法:

import pandas as pd
data_csv = pd.read_csv(filepath_or_buffer='text.csv' , sep='.@', header=None, names=['sentence','sentiment'])
list_data = []
for index, row in data_csv.iterrows():
dictionary_data = {}
dictionary_data['message_body'] = row['sentence']
if row['sentiment'] == 'positive':
dictionary_data['sentiment'] = 1
elif row['sentiment'] == 'negative':
dictionary_data['sentiment'] = -1
else:
dictionary_data['sentiment'] = 0
list_data.append(dictionary_data)

一旦你读了文件,你应该能够把它作为一个列表理解来做,例如

list = [{'message_body': line_without_sentiment, 'sentiment': sentiment} for line in file]

我将离开阅读文件,从情绪中解析正文,并在Google练习时编写JSON文件。

您可以执行以下操作:

# read the file into a list of lines
with open("input.txt") as f:
lines = f.readlines()
# set up empty dictionary
rv = []
# for each line, split into text and sentiment
for x in lines:
line_dict = {'message_body': x.split('.@')[0].strip()}
value = x.split('.@')[1].strip()
# Apply sentiment logic
if value == 'positive':
line_dict['sentiment'] = 1
elif value == 'negative':
line_dict['sentiment'] = -1
else:
line_dict['sentiment'] = 0
rv.append(line_dict)

输出:

>>> rv
[{'message_body': 'FIRST LINE OF TEXT', 'sentiment': -1},
{'message_body': 'SECOND LINE OF TEXT', 'sentiment': 0}]

最新更新