from sklearn.feature_extraction.text import TfidfVectorizer
# 测试sklearn的tf-idf
def dm01():
# 情况一:英文文本语料
corpus = [
'I love you.',
'You love him!',
'He is a gay!'
]
# 情况二:中文文本语料(字)
# corpus = [
# '我 爱 你.',
# '你 爱 他!',
# '他 是 同 性 恋!'
# ]
# 情况三:中文文本语料(词语)
# corpus = [
# '我 爱 你.',
# '你 爱 他!',
# '他 是 同性恋!'
# ]
# 创建TF-IDF对象
# token_pattern:正则表达式,用于分词
# (?u):启用Unicode模式,能处理非ASCII字符字符,比如中文等
# \b:单词边界
# \w:匹配一个字符(大小写字母,数字,下划线)
# \w+:匹配一个或者多个字符
vectorizer = TfidfVectorizer(token_pattern=r'(?u)\b\w+\b')
# 对文本进行tf-idf处理
X = vectorizer.fit_transform(corpus)
# 查看处理后的结果,即:特征词(词表)
features = vectorizer.get_feature_names_out()
print("features-->", features)
# 稀疏矩阵
print("X-->", X)
# 稠密矩阵
print("X-->", X.toarray())
# 测试sklearn的tf-idf
def dm02():
corpus = ['苹果 手机 好用', '华为 手机 耐用']
# stopwords:停用词,也就是不用的词语(没用)
vectorizer = TfidfVectorizer(token_pattern=r'(?u)\b\w\w+\b', stop_words=['华为'])
# 对文本进行tf-idf处理
X = vectorizer.fit_transform(corpus)
# 查看处理后的结果,即:特征词(词表)
features = vectorizer.get_feature_names_out()
print("features-->", features)
# 稠密矩阵
print("X-->", X.toarray())
if __name__ == '__main__':
# dm01()
dm02()