Я хочу создать пользовательский модуль tokenizer в Python, который позволяет пользователям указывать, какой токенизатор использовать для ввода. Например, рассмотрим следующий ввод:
В: Каков хороший способ достичь этого? Ответ: Я не уверен. я думаю я будет использовать Python.
Я хочу быть в состоянии предоставить токенинг предложений NLTK, 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. QA → SENTENCE
[
('QUESTION',
('SENTENCE', 'What is a good way to achieve this?'),
),
('ANSWER',
('SENTENCE', 'I am not so sure', 'I think I will use Python')
)
]
2. QA
[
('QUESTION', 'What is a good way to achieve this?'),
('ANSWER', 'I am not so sure. I think I will use Python')
]
Какая хорошая конструкция для достижения этой эффективности?