将单词重新排序规则应用于元组列表
Applying word reordering rules to a list of tuples
假设我们有:
[('The', 'DET'),
('red', 'ADJ'),
('window', 'NOUN'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
它是一个元组列表,第一个元素是句子中的一个词(在本例中,'The red window is closed.'),第二个元素是语法类别(或标记)。
假设我们有以下规则:
1.)
[('ADJ', 'NOUN'), ('NOUN', 'ADJ')]
这表示如果我们有一个 ADJ 紧跟一个 NOUN(在这个例子中,'red',和 'window'),我们应该重新排序它们,以便 NOUN 紧跟在调整。
将规则 1 应用于句子的结果将是:
[('The', 'DET'),
('window', 'NOUN'),
('red', 'ADJ'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
有人知道如何针对任意数量的其他规则和句子自动执行此操作吗?
甚至一些基本策略也会有所帮助,真的。
如有任何帮助,我们将不胜感激。
这是我想出的:
第一步:设置变量(这里你说的规则可以简化)
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!")
当然,这个实现是不完整的,因为我自己写整个东西是没有意义的。
一些注意事项:
记得处理index+1越界
切换 2 个项目可能会导致链式切换 - 假设顺序是 ADJ、NOUN、NOUN,这将导致第一次迭代中出现 NOUN、ADJ、NOUN,第二次出现 NOUN、NOUN、ADJ一个
复杂的规则可能会破坏实现自动化行为的想法
假设我们有:
[('The', 'DET'),
('red', 'ADJ'),
('window', 'NOUN'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
它是一个元组列表,第一个元素是句子中的一个词(在本例中,'The red window is closed.'),第二个元素是语法类别(或标记)。
假设我们有以下规则:
1.)
[('ADJ', 'NOUN'), ('NOUN', 'ADJ')]
这表示如果我们有一个 ADJ 紧跟一个 NOUN(在这个例子中,'red',和 'window'),我们应该重新排序它们,以便 NOUN 紧跟在调整。 将规则 1 应用于句子的结果将是:
[('The', 'DET'),
('window', 'NOUN'),
('red', 'ADJ'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
有人知道如何针对任意数量的其他规则和句子自动执行此操作吗? 甚至一些基本策略也会有所帮助,真的。
如有任何帮助,我们将不胜感激。
这是我想出的:
第一步:设置变量(这里你说的规则可以简化)
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!")
当然,这个实现是不完整的,因为我自己写整个东西是没有意义的。 一些注意事项:
记得处理index+1越界
切换 2 个项目可能会导致链式切换 - 假设顺序是 ADJ、NOUN、NOUN,这将导致第一次迭代中出现 NOUN、ADJ、NOUN,第二次出现 NOUN、NOUN、ADJ一个
复杂的规则可能会破坏实现自动化行为的想法