Files
task-3-2-1-Text-Processing-…/Y.py
2026-04-23 16:02:44 +08:00

50 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("题目6BoW模型的缺点至少2个")
print("="*50)
print("""
1. 完全忽略词序与上下文语义
- 原理BoW把文档当成「无序词汇袋」完全丢失词汇顺序、语法、上下文关系
- 问题场景:
句子A"我喜欢苹果 不喜欢香蕉"
句子B"我喜欢香蕉 不喜欢苹果"
两个句子语义完全相反但BoW向量完全相同会被模型判定为相似在情感分析、语义理解任务中完全失效。
2. 无法处理一词多义/多词一义
- 原理BoW把每个词当成独立符号不考虑词汇的语义关联
- 问题场景:
"Python"既可以指编程语言,也可以指蟒蛇;"开心""高兴"是同义词但BoW会把它们当成完全不同的词。
在语义检索、文本分类任务中,会丢失语义关联,导致模型效果差。
3. 维度灾难+稀疏性问题
- 原理:词表维度=语料库词汇总数大语料下维度极高且大部分向量元素为0稀疏
- 问题场景:
处理百万级文档的语料时,向量维度会达到几十万,计算成本极高,且模型容易过拟合,在机器学习任务中训练效率极低。
""")