【问题标题】:Lists in Python (Using NLTK)Python 中的列表(使用 NLTK)
【发布时间】:2013-11-08 01:28:19
【问题描述】:

我正在尝试以 [[(the, cat), (cat, with), (with, fur)] [(the, dog), (dog, with), (with, ball).......etc] 来自一个文本文件,其中的句子如下:

有毛的猫\n 带球的狗\n

我遇到的问题是,当我逐字读取文件中的行,制作元组(变量标签)并创建最终列表(变量连接)时,有空的实例是连接变为 0。好吧,实际上不是 0,但列表显示为 [[]、[]、[]]

这是该部分程序的代码: with open('corpus.txt', 'r') as f:

with open('corpus.txt', 'r') as f:
    for line in f:
        cnt = 0
        sa = nltk.word_tokenize(line)
        label[:] = []

        for i in sa:
            words.append(i)
            if cnt>0:
                try: label +=[(prev , i)]
                except: NameError
            prev = i 
            cnt = cnt + 1

        if label != []:
            connection += [label]
            print connection

我希望有人能理解我的问题,因为这让我发疯了,而且我的时间不多了。我只是想知道我在这里做错了什么,这样我就可以在每个循环中更新我的连接列表,而不会丢失我之前保存的内容。

感谢您的帮助

【问题讨论】:

  • 可以肯定地说您有一个句子列表,其中每个句子都表示为一个单词列表,并且您想获得每个句子中的二元组列表吗?
  • 没错,不知道二元组,是的,这更容易说出来:) PS:实际上我想要所有文件的二元组,但在“子列表”中分隔,例如 [[(a1, a2), (a2,a3)],[(b1,b2) ,(b2,b3)]

标签: python list nltk


【解决方案1】:

您可以使用nltk.bigrams 来获取元组,而不必担心边界条件是否正确。如果words 是一个句子中的单词列表,你会得到所有的二元组

bigrams = nltk.bigrams(words)

【讨论】:

    【解决方案2】:

    我没有安装 NLTK,但看看这是否适合你:

    with open('corpus.txt', 'r') as f:
        answer = []
        for line in f:
            cnt = 0
            sa = nltk.word_tokenize(line)
            answer.append([tuple([char, sa[i+1]]) for i,char in enumerate(sa[:-1])])
    

    【讨论】:

    • OMG 谢谢哈哈,效果很好,我可以继续编码! ...10000 谢谢你,先生!
    • @FranciscoArriagadaArroyo:哈哈!乐意效劳。祝你程序的其余部分好运
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2018-07-21
    • 2023-03-09
    • 2016-03-01
    • 2014-05-10
    • 2018-10-02
    相关资源
    最近更新 更多