37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
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,
|
||
# 增加计算开销,在大规模文本处理中效率低下。
|