[数据科学]week8_文本分析

文本特征计算。

在文档集“我是中国人,我爱中国”,“我是上海人”,“我住在上海松江大学城”再添加两条文本“松江大学城有很多大学”,“大学城共有15万余大学生”。

1)计算文档集中每条文本的词袋和TF-IDF特征表示。

2)比较获得的词向量与课堂实例中只使用前三条文本计算出的词向量是否一致,说明原因。

 

from patsy.contrasts import test_diff
from sklearn.feature_extraction.text import CountVectorizer
import jieba

corpus0=[
    "我是中国人,我爱中国",
    "我是上海人",
    "我住在上海松江大学城"
]


split_corpus0=[]
for text in corpus0:
    words=" ".join(jieba.cut(text))
    split_corpus0.append(words)
print(split_corpus0)
#生成词袋
cv=CountVectorizer()
cv_fit=cv.fit_transform(split_corpus0)
print(cv.get_feature_names_out())
print(cv_fit.toarray())
#TF-IDF模型
from sklearn.feature_extraction.text import TfidfTransformer
tfidf_transformer=TfidfTransformer()
tfidf_fit=tfidf_transformer.fit_transform(cv_fit)
print(tfidf_fit.toarray())


corpus=[
    "我是中国人,我爱中国",
    "我是上海人",
    "我住在上海松江大学城",
    "松江大学城有很多大学",
    "大学城共友15余万名大学生"
]
split_corpus=[]
for text in corpus:
    words=" ".join(jieba.cut(text))
    split_corpus.append(words)
print(split_corpus)
#生成词袋
cv=CountVectorizer()
cv_fit=cv.fit_transform(split_corpus)
print(cv.get_feature_names_out())
print(cv_fit.toarray())

#TF-IDF模型
tfidf_transformer=TfidfTransformer()
tfidf_fit=tfidf_transformer.fit_transform(cv_fit)
print(tfidf_fit.toarray())



 从天猫/京东收集自己感兴趣的某种商品的评价文本,自己为每条文本添加情感标注:正向、中性、负向。数据保存格式参见垃圾邮件分类实例。训练分类模型实现文本情感的识别。

import jieba
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import classification_report, confusion_matrix

# 读取数据
with open("D:\\aaa东华大学\\专业课\\数据科学\\homework\\product_comment.txt", 'r', encoding='utf-8') as file:
    lines = file.readlines()

# 分割数据为特征和标签
comments = []
labels = []
for line in lines:
    # 检查是否包含制表符 '\t'
    if '\t' in line:
        content, label = line.strip().split('\t')
        comments.append(content)
        labels.append(label)

# 使用jieba进行中文分词
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(" ".join(jieba.lcut(comment)) for comment in comments).toarray()

# 将标签转换为数值
label_map = {'正向': 1, '中性': 0, '负向': -1}
y = [label_map[label] for label in labels]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)

# 创建SVM分类器
clf = svm.SVC(kernel='rbf', gamma=0.7, C=1.0)

# 训练模型
clf.fit(X_train, y_train)

# 进行预测
y_pred = clf.predict(X_test)

# 打印性能指标
print("SVM accuracy:", clf.score(X_test, y_test))
print("SVM classification report:\n", classification_report(y_test, y_pred))
print("SVM confusion matrix:\n", confusion_matrix(y_test, y_pred))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Juneeeeeeeeeeeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值