Python:两个文件逐词文本处理
我刚接触自然语言处理(NLP)。我有两个文本文件。第一个文件包含格式正确的对话内容,像下面这样。
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列。在第5列中,我有来自对话的单词序列,像下面这样。
Column 5
Can
I
help
you
?
yes
.
Um
,
在这里,句号和逗号都被视为单词。如果有三个或更多的句号连在一起,比如 "..."
,那么它应该被视为一个单词。此外,像 "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 个回答
我建议你按照以下步骤进行:
处理文本文件1
在这里,你需要把像 LEONARD Agreed, what's your point
这样的字符串分割成一组小块。一个简单的方法是用 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列)。
你可以通过 TheBigBangTheory.Season01.Episode01.en 1 59.160 0.070 you 0.990 lex
这个字符串来获取单词,只需用 sentence.split(" ")[4]
,这样就能得到 you
。
我觉得这个过程可能还需要一些调整,但我把这个留给你去处理。这大致上就是思路。
祝好运,Bazinga!