получить нграммы с позиционной информацией - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь сгруппировать похожие короткие описания вместе и в настоящее время использую ngrams для извлечения текстовых объектов.Вот функция ngrams, которую я использую:

def generate_ngrams(text, n):
    text = text.lower()
    text = re.sub(r'[^a-zA-Z0-9\s]', ' ', text)
    tokens = [token for token in text.split(" ") if token != ""]
    ngrams = zip(*[token[i:] for i in range(n)])
    return [" ".join(ngram) for ngram in ngrams]

Однако после кластеризации я получаю некоторые нежелательные результаты.Предположим, у меня есть два следующих текста:

00011122abc
00111224abc

Используя ngrams (n = 3), моя модель кластеризации сгруппировала их вместе, а это не то, что я хочу.Поэтому я думаю, что мне нужно передать новую функцию в векторизатор tfidf вместо ngrams.Я думаю, что мне нужно привязать первый символ и создать подстроки в качестве моих функций для tfidf, поэтому для первого текста это будет примерно так:

[000, 0001, 00011, 0001111, 0001112 ...]

Кто-нибудь еще сталкивался с подобными проблемами или есть лучшеспособ подойти к этому?Спасибо!

...