Python:逐字文字处理两个文件

时间:2015-11-19 13:49:35

标签: python string nlp text-processing

我是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"(因为它们之间没有空格)应该被视为单个单词。

现在我想在python中编写一个脚本来比较dialogues中的每个单词,然后创建一个新列(第8列),该列应显示“谁说出单词”。如下所示

    Column 5           Column 8
    Can                RECEPTIONIST
    I                  RECEPTIONIST
    help               RECEPTIONIST
    you                RECEPTIONIST
    ?                  RECEPTIONIST  
    yes                LINCOLN
    .                  LINCOLN
    Um                 LINCOLN
    ,                  LINCOLN

enter image description here

因为我对python环境完全陌生。我不知道从哪里开始。请提供您的建议和任何编码提示!

第一个文件包含对话框,第二个文件包含有关对话框的信息

1 个答案:

答案 0 :(得分:2)

我建议执行以下步骤:

处理文本文件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

我相信它仍然需要一些调整,但我会留给你。这可能概括了一般的想法。

Goodluck,Bazinga!