我正在尝试将类似的简短描述归为一组,目前正在使用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 ...]
其他人是否遇到过类似的问题,或者有更好的方法来解决此问题?谢谢!