Python:两个文件逐词文本处理

2 投票
1 回答
1209 浏览
提问于 2025-05-10 15:32

我刚接触自然语言处理(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 个回答

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

我觉得这个过程可能还需要一些调整,但我把这个留给你去处理。这大致上就是思路。

祝好运,Bazinga!

撰写回答