获取具有位置信息的ngram

时间:2019-06-06 11:31:34

标签: python nlp similarity tf-idf n-gram

我正在尝试将类似的简短描述归为一组,目前正在使用ngram提取文本特征。这是我正在使用的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。我想我需要锚定第一个char并创建子字符串作为tfidf的功能,因此对于第一个文本,它将是这样的:

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

其他人是否遇到过类似的问题,或者有更好的方法来解决此问题?谢谢!

0 个答案:

没有答案