【发布时间】:2013-04-02 11:51:36
【问题描述】:
我想在 Python 中设计一个自定义标记器模块,让用户可以指定要用于输入的标记器。例如,考虑以下输入:
问:实现这一目标的好方法是什么?答:我不太确定。我想我 将使用 Python。
我希望能够提供NLTK's sentence tokenization、sent_tokenize() 作为选项,因为它在许多情况下都很好用,我不想重新发明轮子。除此之外,我还想提供一个更细粒度的标记化构建器(类似于规则引擎的东西)。让我解释一下:
假设我提供了几个分词器:
SENTENCE # Tokenizes the given input by using sent_tokenize()
WORD # Tokenizes the given input by using word_tokenize()
QA # Tokenizes using a custom regular expression. E.g., Q: (.*?) A: (.*?)
我想支持如下规则:
- QA -> SENTENCE:首先应用 QA 分词器,然后是句子分词器
- QA:仅应用 QA 标记器
因此,预期的输出如下:
1.质量检查 -> 句子
[
('QUESTION',
('SENTENCE', 'What is a good way to achieve this?'),
),
('ANSWER',
('SENTENCE', 'I am not so sure', 'I think I will use Python')
)
]
2。质量检查
[
('QUESTION', 'What is a good way to achieve this?'),
('ANSWER', 'I am not so sure. I think I will use Python')
]
有什么好的设计可以有效地实现这一目标?
【问题讨论】:
-
你在问使用什么库?
-
@JoranBeasley:库或可扩展的良好可扩展设计模式。我没有使用编译器,所以我只是想确保我没有重新实现该领域的标准。
-
我不确定词法分析器/语法我真的只搞砸了 ply ...但这可能是您要寻找的...这里有一个很好的解析选项列表:nedbatchelder.com/text/python-parsers.html .. . 虽然我不确定这是否能部分回答你的问题
-
仅仅编写一个接受输入函数并将它们应用于给定文本的函数有什么问题?您可以包括
word_tokenize、sent_tokenize和regexp_tokenize? -
不应该 QA -> SENTENCE 看起来像 ('QUESTION', ('SENTENCE', 'What is a good way to achieve this?')),
标签: python regex token tokenize nltk