python - 用 nltk 提取元组?

标签 python nlp nltk

阅读 nltk 的文档,我发现可以使用 str2tuple() 提取元组。作为一个例子,假设我有以下句子(显然是一个更大的文件):

sent = "pero pero CC " \
        "tan tan RG " \
        "antigua antiguo AQ0FS0 " \
        "que que CS " \
        "según según SPS00 " \
        "mi mi  DP1CSS " \
        "madre madre NCFS000"

我想提取元组列表,例如:

> ([antigua, AQ0FS0],[madre, NCFS000])

女性形容词标签(AQ0FS0)和女性名词标签(NCFS000)。这可以通过 str2tuple() 实现吗?或者更好的方法可以使用正则表达式?

这是我尝试过的:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import nltk as nl

sent = "pero pero CC " \
              "tan tan RG " \
              "antigua antiguo AQ0FS0 " \
              "que que CS " \
              "según según SPS00 " \
              "mi mi  DP1CSS " \
              "madre madre NCFS000"

nl.tag.str2tuple(t) for t in sent.split()

最佳答案

我认为您拥有的是一个垂直文本文件,又名 .vrt ,请参阅 CWB encoding Corpus

我猜第一列表示单词的表面形式,第二列表示某种引理,第三列表示词性文本。

首先看一下 csv 模块,我发现本教程很有帮助,http://www.pythonforbeginners.com/systems-programming/using-the-csv-module-in-python/

假设您有一个制表符分隔的文件,如下所示:

pero    pero    CC
tan tan RG
antigua antiguo AQ0FS0
que que CS
según   según   SPS00
mi  mi  DP1CSS
madre   madre   NCFS000

读取文件,有时人们称之为“解析文件”:

import csv

with open('test.txt', 'r') as fin:
    reader = csv.reader(fin, delimiter='\t')
    for line in reader:
        word, lemma, pos = line
        print word, lemma, pos

要获取句子的(word,pos)元组结构,请尝试:

import csv
sentences = []
with open('test.txt', 'r') as fin:
    reader = csv.reader(fin, delimiter='\t')
    for line in reader:
        word, lemma, pos = line
        sentences.append((word, pos))

print sentences

[输出]:

[('pero', 'CC'), ('tan', 'RG'), ('antigua', 'AQ0FS0'), ('que', 'CS'), ('seg\xc3\xban', 'SPS00'), ('mi', 'DP1CSS'), ('madre', 'NCFS000')]

关于python - 用 nltk 提取元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26113459/

相关文章:

python - 使用 Groupby 自定义时间段

python - 如何提高lstm训练的准确性

python-3.x - 如何从棕色语料库中获取动词、名词、形容词?

installation - 以编程方式安装 NLTK 语料库/模型,即无需 GUI 下载器?

python - 如何从 NLTK 扩展停用词列表并使用扩展列表删除停用词?

python - 在 bash for 循环中组合 python 脚本时出错

python - Boost.Python 返回不可复制对象的列表

python - 使用 NLTK 中的 shif-reduce 解析器以尽可能多种不同的方式解析句子?

python - 使用带星号的表达式和变量

python - 给定一个 2D 数组,找到 object[1] 等于某个字符串 x 的对象