Ecrire un tokenizer en Python

Je veux concevoir un générateur de jetons module en Python qui permet aux utilisateurs de spécifier générateur de jetons(s) à utiliser pour l'entrée. Par exemple, considérons le code suivant:

Q: qu'est Ce qu'un bon moyen pour y parvenir? Un: je ne suis pas si sûr. Je pense que je
va utiliser Python.

Je veux être en mesure de fournir NLTK de la segmentation de la phrasesent_tokenize() comme une option, car il fonctionne bien dans de nombreux cas, et je ne veux pas ré-inventer la roue. En plus de cela, je tiens également à fournir un grain plus fin de la segmentation du générateur de (quelque chose le long des lignes d'un règle-moteur). Laissez-moi vous expliquer:

Supposer que j'fournisseur d'un couple de des générateurs de jetons:

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: (.*?)

Je veux soutenir règles comme suit:

  1. QA -> PHRASE: Appliquer l'assurance de la qualité générateur de jetons en premier, suivi par la phrase tokenizer
  2. QA: Appliquer seulement l'assurance de la qualité tokenizer

Par conséquent, la sortie attendue est comme suit:

1. QA -> PHRASE

[
  ('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')
]

Qu'est ce qu'un bon design pour y parvenir?

source d'informationauteur Legend