Как посчитать количество множественного числа и единственного числа, представленных в корпусе Python - PullRequest
0 голосов
/ 01 ноября 2018

Надеюсь, вы поможете мне с заданием.

Мне нужно посчитать количество множественного числа и единственного числа в корпусе. У меня есть корпус, линии которого имеют следующую структуру:

['4', 'lanzas', 'lanza', 'NCFP000']

первая позиция [0] считается числом (4), вторая [1] считается формой (ланца), третья позиция [2] считается леммой (ланца) и четвертой позицией [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, которые обозначают множественное число, единственное, женское и мужское), обнаруженные во всем корпусе.

Пока я пробовал это:

корпус = открыт ( 'F: /python/corpus-morf.txt', 'г')

Текст = открыт ( 'F: /python/deberes.txt', 'г')

линии = 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]                                                                            

и я застрял здесь.

У вас есть идеи? Я искренне ценю вашу помощь.

1 Ответ

0 голосов
/ 01 ноября 2018

Вот один из подходов - обратите внимание, что здесь учитываются все категории, поэтому вам нужно отфильтровать полученный словарь только по тем, которые вам нужны:

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

...