Применение правил переупорядочения слов к списку кортежей - PullRequest
0 голосов
/ 20 мая 2018

Предположим, что у нас есть:

[('The', 'DET'),
 ('red', 'ADJ'),
 ('window', 'NOUN'),
 ('is', 'VERB'),
 ('closed', 'VERB'),
 ('.', 'PUNCT')]

Это список кортежей, в котором их первый элемент является словом предложения (в данном случае, «Красное окно закрыто»), ивторая - это грамматическая категория (или тег).

Предположим, у нас есть следующее правило:

1.)

  [('ADJ', 'NOUN'), ('NOUN', 'ADJ')]

Это говорит о том, что если у нас есть ADJ немедленноза ним следует NOUN (в данном примере «красный» и «окно»), мы должны изменить их порядок, чтобы сразу за ним следовал ADJ.Тогда результат применения правила 1 к предложению будет следующим:

[('The', 'DET'),
 ('window', 'NOUN'),
 ('red', 'ADJ'),
 ('is', 'VERB'),
 ('closed', 'VERB'),
 ('.', 'PUNCT')]

Кто-нибудь имеет представление о том, как автоматизировать это для любого числа других правил и предложений?Или даже какая-то базовая стратегия действительно поможет.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 20 мая 2018

Вот что я придумал:

Шаг 1: Установите переменные (здесь вы можете упростить упомянутое вами правило)

sentence = [('The', 'DET'), ('red', 'ADJ'), ('window', 'NOUN'), ('is', 'VERB'), ('closed', 'VERB'), ('.', 'PUNCT')]
rule = [('ADJ', 'NOUN')]

Шаг 2: Переберите элементы вВаше предложение

for index in range(0, len(sentence)):

Шаг 3: Получить конкретную информацию из кортежей

current = sentence[index][1]
next = sentence[index+1][1]

Шаг 4: Сравнить

if current == rule[0][0] and next == rule[0][1]:
    print("Here we go, swapping!")

Естественно, эта реализация неполна, так какне было бы смысла во мне писать все это самому.Несколько замечаний:

  • Не забудьте обработать индекс + 1, выходящий за пределы

  • Переключение 2 пунктов может привести к переключению в цепочку - скажем, порядокесли ADJ, NOUN, NOUN, это приведет к NOUN, ADJ, NOUN на первой итерации, а NOUN, NOUN, ADJ во второй

  • Сложные правила могут нарушить идею перехода кавтоматизированное поведение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...