from sklearn.feature_extraction.text import CountVectorizer docs = [ "Python 是 编程 语言", "Java 是 编程 语言", "Python Python Python" ] vectorizer = CountVectorizer() X = vectorizer.fit_transform(docs) print("词表(Vocabulary):") print(vectorizer.get_feature_names_out()) print("\n每个文档的BoW向量:") for i, doc_vec in enumerate(X.toarray()): print(f"Doc{i+1}: {doc_vec}") # 6.BoW模型的缺点及场景问题: # 1. 忽略词序与上下文语义 # - 问题:BoW仅统计词频,不考虑词语顺序, # 例如"我喜欢Python"和"Python喜欢我"的BoW向量完全相同,但语义相反, # 在情感分析、语义理解任务中会导致错误。 # # 2. 无法处理一词多义/多词一义 # - 问题:BoW将每个词视为独立符号,无法识别"苹果"(水果/公司)的不同含义, # 也无法识别"电脑"和"计算机"的同义关系,在语义检索、文本分类中会降低精度。 # # 3. 向量稀疏且维度爆炸 # - 问题:当语料库词汇量很大时,向量维度会极高,且大部分元素为0, # 增加计算开销,在大规模文本处理中效率低下。