为 NLP 任务清理文本数据
Cleaning text Data For NLP tasks
今天早上我一直在尝试在 Cornell Movie--Dialogs Corpus 数据集上训练聊天机器人,但我在清理文本数据以输入我的算法时遇到了问题。
这是文本文件的片段
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 +++$+++ 卡梅伦 +++$+++ 哇
我只对每句话最后部分的对话感兴趣。
我怎样才能清理这个文件并使它成为一个 csv 文件?
数据集Link
http://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.html
模式就在那里! +++$+++
。拆分它,您将获得 CSV 数据。
好吧,您可以使用简单的正则表达式来做到这一点。
代码段
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() 方法完成清理工作
将所有行作为字符串进行迭代。
假设您有:
str = "+++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!"
你想输出 "They do not!"
喜欢:
str.split("+++$+++ ")[-1]
这将为您提供所需的输出。一旦您将需求输出为字符串,将它们逐行写入您的 .csv 文件中。
希望对您有所帮助。
试用此库进行基本清理:https://pypi.org/project/textcleaner/
有一个名为 remove_symbols() 的函数,您也可以传递列表而不是文件作为参数。
下面是使用此功能的文档link。
https://yugantm.github.io/textcleaner/documentation.html#remove_symbols
还有很多其他的文本数据清理功能。
希望对您有所帮助:)
您可以使用'+++\$+++'作为分隔符将文本分成几列
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.
今天早上我一直在尝试在 Cornell Movie--Dialogs Corpus 数据集上训练聊天机器人,但我在清理文本数据以输入我的算法时遇到了问题。 这是文本文件的片段
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 +++$+++ 卡梅伦 +++$+++ 哇 我只对每句话最后部分的对话感兴趣。 我怎样才能清理这个文件并使它成为一个 csv 文件?
数据集Link http://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.html
模式就在那里! +++$+++
。拆分它,您将获得 CSV 数据。
好吧,您可以使用简单的正则表达式来做到这一点。
代码段
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() 方法完成清理工作
将所有行作为字符串进行迭代。
假设您有:
str = "+++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!"
你想输出 "They do not!"
喜欢:
str.split("+++$+++ ")[-1]
这将为您提供所需的输出。一旦您将需求输出为字符串,将它们逐行写入您的 .csv 文件中。
希望对您有所帮助。
试用此库进行基本清理:https://pypi.org/project/textcleaner/
有一个名为 remove_symbols() 的函数,您也可以传递列表而不是文件作为参数。
下面是使用此功能的文档link。 https://yugantm.github.io/textcleaner/documentation.html#remove_symbols
还有很多其他的文本数据清理功能。
希望对您有所帮助:)
您可以使用'+++\$+++'作为分隔符将文本分成几列
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.