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()