0

我希望你能帮助我完成一项任务。

我需要计算语料库中复数和单数的数量。我有一个语料库,其行具有以下结构:

['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')

行=语料库.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]                                                                            

我被困在这里。

你有什么想法?我真诚地感谢您的帮助。

4

1 回答 1

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 })

于 2018-11-01T11:34:37.540 回答