Я работаю над проектом, в котором я должен расширить наши специфичные для домена сокращения, такие как «IS» (специалист по информации). Однако текущий сценарий, который у меня есть, также расширяет распространенные слова, такие как «есть» (например, он забавный). Как я могу различить, действительно ли слово является аббревиатурой?

В настоящее время я использую словарь с ключами в качестве акронимов и значениями в качестве расширенных версий акронимов.

РЕДАКТИРОВАТЬ: Я должен был указать, что меня больше беспокоит крайние случаи, в которых сокращения не пишутся с большой буквы и не имеют периодов между буквами.

-1
bhris 1 Июл 2019 в 23:30

3 ответа

Лучший ответ

Вам нужно убедиться, что все, что вы делаете, чувствительно к регистру. Вам также следует проверить наличие . промежуточных символов.

Я разделил бы каждое слово в строке, нашел бы те, которые являются заглавными, и применил бы словарь только к этим словам. В качестве альтернативы вы можете использовать глобальное регулярное выражение find / replace для аналогичного поиска, и оно может искать как «IS», так и «I.S.».

0
Bhargav Rao 1 Июл 2019 в 21:05

Вы можете разделить слова в списке, а затем проверить, есть ли какие-либо слова во всех CAPS, и сравнить их со своим словарем.

0
Rafael Tamayo 1 Июл 2019 в 20:43

Предполагая, что все сокращения пишутся с большой буквы, вы можете просто сделать простое разбиение и сравнить.

def expand(string, dict):
    tokens = string.split(" ")
    for token in tokens:
        if token in dict:
            yield dict[token]
        else:
            yield token

d = {"IS":"Informatoin Specialist","SO":"Stack Overflow"}
s = "John is an IS at SO"

print(*[t for t in expand(s,d)])

#John is an Information Specialist at Stack Overflow
0
CRotelli 1 Июл 2019 в 20:56