Python : 两个文件之间的逐字文本处理

Python : Word by word Text Processing between two files

我是 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 列。在第 5 列中,我有如下对话中的单词序列。

    Column 5
    Can
    I
    help
    you
    ?
    yes
    .
    Um
    ,

这里的句号和逗号被视为单词,如果像 "..." 一样有 3 个或更多句号在一起,那么它应该被视为一个单词。此外,如果单词 "Thank-you"(因为它们之间没有 space)应该被视为一个单词。

现在我想在 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这样的字符串拆分成 一组标记。一种天真的方法是使用 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 中获取单词,在本例中 returns you

我相信它仍然需要一些调整,但我会把它留给你。这可能会勾勒出总体思路。

祝你好运,巴津加!