今天早上我一直在尝试在康奈尔电影 - 对话语料库数据集上训练聊天机器人,但我面临着清理文本数据以提供给我的算法的问题。 这是文本文件的片段
L1045 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!
L1044 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ They do to!
L985 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ I hope so.
L984 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ She okay?
L925 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ Let's go.
L924 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ CAMERON +++ $ +++哇 我只对每个句子最后一部分的对话感兴趣。 如何清理此文件并将其作为csv文档?
数据集链接 http://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.html
答案 0 :(得分:1)
将所有行迭代为字符串。
让我们说你:
str =" +++ $ +++ u0 +++ $ +++ m0 +++ $ +++ BIANCA +++ $ +++他们没有!"
你希望把它作为"他们没有!"
喜欢:
str.split(" +++ $ +++")[ - 1]
这将为您提供所需的输出。一旦你将欲望输出作为字符串,就在你的.csv文件中逐行写出来。
希望这有帮助。
答案 1 :(得分:0)
模式就在那里! +++$+++
。将其拆分,您将获得CSV数据。
答案 2 :(得分:0)
好吧,你可以使用简单的正则表达式来做到这一点。
代码段
import re
string = "+++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!"
cleaned = " ".join(re.findall("[a-zA-Z]+", string))
print(cleaned)
<强>输出强>:
'u m BIANCA They do not'
在每一行上执行它。我建议你将数据转换为pandas数据框,并使用.apply()方法完成清理工作
答案 3 :(得分:0)
尝试使用此库进行基本清洁:that
有一个名为 remove_symbols()的函数,您也可以传递列表而不是文件作为参数。
下面是使用此功能的文档链接。 https://pypi.org/project/textcleaner/
还有许多其他功能可以清除文本数据。
我希望这会有所帮助:)
答案 4 :(得分:0)
您可以使用'+++ \ $ +++'作为分隔符将文本分成几列
df=pd.read_csv('training_data/movie_lines.txt', sep = '\+\+\+\$\+\+\+', engine = 'python', header=None)
您将获得类似下面的内容,然后可以删除您不想使用的列。
0 1 2 3 4
0 L1045 u0 m0 BIANCA They do not!
1 L1044 u2 m0 CAMERON They do to!
2 L985 u0 m0 BIANCA I hope so.
3 L984 u2 m0 CAMERON She okay?
4 L925 u0 m0 BIANCA Let's go.
现在要删除不必要的列,请使用:
df.drop(df.columns[0:4], axis=1, inplace=True)
4
0 They do not!
1 They do to!
2 I hope so.
3 She okay?
4 Let's go.