Учитывая блок текста в нижнем регистре, как вы идентифицируете аббревиатуры, используя инструмент, подобный Spacy , или что-то подобное? Я пытаюсь разумно использовать заглавные слова, если они являются именами собственными, и у меня возникают проблемы с идентификацией аббревиатур.
POS-тег Spacy довольно хорошо работает для определения имен собственных, включая наиболее распространенные аббревиатуры, через его стандартобъект документа, но я не вижу простого способа отличить короткое имя от аббревиатуры в токенах, которые он возвращает.
Например:
import spacy
nlp = spacy.load('en_core_web_lg')
text = 'joe bought stock in ibm'
doc = nlp(text)
for i, token in enumerate(doc):
print(i, token.text, token.pos_)
печатает:
0 joe PROPN
1 bought VERB
2 stock NOUN
3 in ADP
4 ibm PROPN
Таким образом, он правильно определил два имени существительных. Однако в токенах для 0 или 4 нет ничего, что идентифицировало бы одно как обычное имя, тогда как другое - аббревиатуру.
Я не могу найти ничего в разъяснениях в документах. Есть ли способ в Spacy, чтобы обнаружить акроним? Если нет, есть ли другие надежные способы?