希望您能帮助我完成任务。
我需要计算语料库中的复数和单数。我有一个语料库,其行具有以下结构:
['4', 'lanzas', 'lanza', 'NCFP000']
第一个位置[0]计数为数字(4),第二个[1]计数为形式(lanzas),第三个位置[2]计数为引理(lanza),第四个位置[3]计算类别(NCFP000),例如动词,名词等。 因此,在这个语料库中,每个单词都是根据其引理和类别构成的,如果单词是单数,复数,男性或女性,则类别会向我们提供信息。
Here are some examples of lines from the corpus:
['1', 'Cargó', 'cargar', 'VMIS3S0']
['2', 'el', 'el', 'DA0MS0']
['3', 'camión', 'camión', 'NCMS000']
['4', 'con', 'con', 'SP']
['5', 'los', 'el', 'DA0MP0']
['6', 'trastos', 'trasto', 'NCMP000']
['7', 'más', 'más', 'RG']
['8', 'pesados', 'pesado', 'AQ0MP00']
['9', '.', '.', 'Fp']
因此,如您所见,最后位置[3]占单词的类别,因此AQ0MP00表示单词是复数形式和形容词。
我的问题是在这种情况下如何计算复数和单数?具体来说,我需要计算整个语料库中的以下类别(NCFS000,NCFP000,NCMS000和NCMP000,它们代表复数,单数,女性和男性)。
到目前为止,我已经尝试过:
corpus = open('F:/python/corpus-morf.txt','r')
text = open('F:/python/deberes.txt','r')
lines = corpus.readlines()
对于i行:
lista=i.split()
#print(lista)
p=len(lista)
if p >0:
forma=lista[1].rstrip()
lema=lista[2].rstrip()
categoria=lista[3].rstrip()
aa=[forma,lema,categoria]
我被困在这里。
您有什么想法吗?衷心感谢您的帮助。
答案 0 :(得分:0)
这是一种方法-请注意,此方法计算了所有类别,因此您只需要针对所关注的字典对结果字典进行过滤:
from collections import Counter
corpus = [
['1', 'Cargó', 'cargar', 'VMIS3S0'],
['2', 'el', 'el', 'DA0MS0'],
['3', 'camión', 'camión', 'NCMS000'],
['4', 'con', 'con', 'SP'],
['5', 'los', 'el', 'DA0MP0'],
['6', 'trastos', 'trasto', 'NCMP000'],
['7', 'más', 'más', 'RG'],
['8', 'pesados', 'pesado', 'AQ0MP00'],
]
print(Counter(x[3] for x in corpus))
计数器({'VMIS3S0':1,'DA0MS0':1,'NCMS000':1,'SP':1,'DA0MP0':1,'NCMP000':1,'RG':1,'AQ0MP00 ':1})