Я использую POS-теги NLTK для извлечения информации из текста, в этом примере я ищу IBAN. Для некоторых текстов код возвращает более одного куска, но я не возражаю против этого, позже я разберу правильный с помощью RegEx.
Теперь вот мой вопрос: есть ли более симпатичный способ получить строки чанка, чтобы я мог работать с ними или сохранить их?
Конечно, вы могли бы пойти искусственным путем (то есть перебрать все строки в ibanChunk, затем ibanChunk.replace (..) и т. Д.), Но должен быть лучший путь, по крайней мере, это то, на что я надеюсь.
tagged_sents = list(corp.tagged_sents())
tagger = ClassifierBasedGermanTagger(train=tagged_sents)
tagged_sents = tagger.tag(filtered_sentence)
ibanChunkGram = r"""Chunk: {(<VMPP><CARD>*)|(<FM><CARD>+)}"""
chunkParser = nltk.RegexpParser(ibanChunkGram)
ibanChunk = chunkParser.parse(tagged_sents)
print(ibanChunkGram)
Прямо сейчас вывод строки выглядит так:
(Chunk DE01/FM 2345/CARD 6789/CARD 0000/CARD 0000/CARD 00/CARD)
и я хочу получить:
DE01 2345 6789 0000 0000 00
Редактировать: вот минимальный пример:
This is a minimal example of POS-tagging. I want to extract an IBAN (DE01 2345 6789 0000 0000 00) and I hope The Machine 01 can find it quick.
И это вывод моего кода:
(S
This/NE
is/FM
a/FM
minimal/FM
example/FM
of/FM
POS-tagging/FM
./$.
I/FM
want/FM
to/FM
extract/FM
IBAN/FM
(/$(
(Chunk DE01/FM 2345/CARD 6789/CARD 0000/CARD 0000/CARD 00/CARD)
)/$(
and/NE
I/NE
hope/VAFIN
The/NE
Machine/NE
01/CARD
can/XY
find/XY
it/XY
quick/XY
./$.)