阅读 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/