将单词重新排序规则应用于元组列表

时间:2018-05-20 18:00:06

标签: python-3.x nlp word

我们假设我们有:

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

这是一个元组列表,使得它们的第一个元素是一个句子的单词(在这种情况下,“红色窗口关闭。”),第二个元素是语法类别(或标记)。

假设我们有以下规则:

1。)

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

这说明如果我们有一个ADJ后面紧跟一个NOUN(在这个例子中,'red'和'window'),我们应该对它们重新排序,以便NOJ立即跟随ADJ。 将规则1应用于句子的结果将是:

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

任何人都知道如何为任何其他规则和句子自动化这个? 或者甚至只是一些基本策略会有所帮助。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

以下是我提出的建议:

步骤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在第二次

  • 复杂的规则可能会破坏采用自动行为的想法