上传文件至 /
This commit is contained in:
50
Y.py
Normal file
50
Y.py
Normal file
@@ -0,0 +1,50 @@
|
||||
docs = [
|
||||
"Python 是 编程 语言", # Doc1
|
||||
"Java 是 编程 语言", # Doc2
|
||||
"Python Python Python" # Doc3
|
||||
]
|
||||
|
||||
tokenized_docs = [doc.split() for doc in docs]
|
||||
print("分词后的文档:")
|
||||
for i, tokens in enumerate(tokenized_docs, 1):
|
||||
print(f"Doc{i}: {tokens}")
|
||||
|
||||
vocab = []
|
||||
for tokens in tokenized_docs:
|
||||
for token in tokens:
|
||||
if token not in vocab:
|
||||
vocab.append(token)
|
||||
print("\nBoW词表:", vocab)
|
||||
|
||||
bow_vectors = []
|
||||
for tokens in tokenized_docs:
|
||||
vector = [tokens.count(word) for word in vocab]
|
||||
bow_vectors.append(vector)
|
||||
|
||||
print("\n每个文档的BoW向量:")
|
||||
for i, vec in enumerate(bow_vectors, 1):
|
||||
print(f"Doc{i}: {vec}")
|
||||
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("题目6:BoW模型的缺点(至少2个)")
|
||||
print("="*50)
|
||||
print("""
|
||||
1. 完全忽略词序与上下文语义
|
||||
- 原理:BoW把文档当成「无序词汇袋」,完全丢失词汇顺序、语法、上下文关系
|
||||
- 问题场景:
|
||||
句子A:"我喜欢苹果 不喜欢香蕉"
|
||||
句子B:"我喜欢香蕉 不喜欢苹果"
|
||||
两个句子语义完全相反,但BoW向量完全相同,会被模型判定为相似,在情感分析、语义理解任务中完全失效。
|
||||
|
||||
2. 无法处理一词多义/多词一义
|
||||
- 原理:BoW把每个词当成独立符号,不考虑词汇的语义关联
|
||||
- 问题场景:
|
||||
"Python"既可以指编程语言,也可以指蟒蛇;"开心"和"高兴"是同义词,但BoW会把它们当成完全不同的词。
|
||||
在语义检索、文本分类任务中,会丢失语义关联,导致模型效果差。
|
||||
|
||||
3. 维度灾难+稀疏性问题
|
||||
- 原理:词表维度=语料库词汇总数,大语料下维度极高,且大部分向量元素为0(稀疏)
|
||||
- 问题场景:
|
||||
处理百万级文档的语料时,向量维度会达到几十万,计算成本极高,且模型容易过拟合,在机器学习任务中训练效率极低。
|
||||
""")
|
||||
Reference in New Issue
Block a user