我是 NLP 新手。我有两个文本文件。第一个文件有 dialogues
格式正确,如下所示。
RECEPTIONIST Can I help you?
LINCOLN Yes. Um, is this the State bank?
RECEPTIONIST If you have to ask, maybe you shouldn't be here.
SARAH I think this is the place.
RECEPTIONIST Fill in the query.
LINCOLN Thank-you. We'll be right back.
RECEPTIONIST Oh, take your time. I'll just finish my crossword puzzle.
oh, wait.
第二个文本文件有 7 列。在第五列中,我有如下对话中的单词序列。
Column 5
Can
I
help
you
?
yes
.
Um
,
句号和逗号在这里被视为单词,如果它有 3 个或更多句号在一起,例如 "..."
那么它应该被视为一个单词。又如的话"Thank-you"
(因为它们之间没有空格)应被视为单个单词。
现在我想用 python 编写一个脚本来比较 dialogues
中的每个单词。然后创建一个新列(第 8 列),其中应显示 “谁说这个词” 。就像下面这样
Column 5 Column 8
Can RECEPTIONIST
I RECEPTIONIST
help RECEPTIONIST
you RECEPTIONIST
? RECEPTIONIST
yes LINCOLN
. LINCOLN
Um LINCOLN
, LINCOLN
因为我对 python 环境完全陌生。我不知道从哪里开始。请提供您的建议和任何编码技巧!
第一个文件包含对话,第二个文件包含有关对话的信息
最佳答案
我建议执行以下步骤:
处理文本文件 1
这里你想将字符串像LEONARD Agreed,what's your point
分成
一组 token 。一种简单的方法是使用 split("")
,它会根据空格分割文本,但是您还需要考虑标点符号。
我建议使用NLTK,一个用于自然语言处理的Python库。一个基本示例将展示这如何帮助您:
import nltk
sentence = """Hi this is a test."""
tokens = nltk.word_tokenize(sentence)
# output: tokens
['Hi', 'this', "is", 'a', 'test', '.']
一旦您正确标记了每个句子,您就会知道它在第二个文本文件中将有多少行。
处理文本文件2
现在您将迭代第二个文本文件中的每一行,检查该单词是否与您在第一步中找到的假定标记匹配。如果是这种情况,您将第一个标记(说这句话的人的名字)添加到该行的末尾(第 8 列)。
只需执行 sentence.split("")[4]
,即可从字符串 TheBigBangTheory.Season01.Episode01.en 1 59.160 0.070 you 0.990 lex
获取单词>,在本例中返回you
。
我相信它仍然需要一些调整,但我会把它留给你。这可能概述了总体思路。
祝你好运,巴津加!
关于 python : Word by word Text Processing between two files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805765/