Всем привет, я одноклассник К~
Приближается весна, приближается осень, а время просто тикает, я не знаю, как дела у всех с финальным проектом.
K Classmates сегодня поделились практическим примером анализа комментариев к онлайн-курсам, чтобы помочь каждому найти вдохновение.
Данные являются общедоступными данными обзора онлайн-курса, моя среда выглядит следующим образом
- Язык: Python3.6.5
- Компилятор: Jupyter Notebook
- номер версии gensim: 4.0.1
Вы можете настроить его с помощью следующего оператораgensim
pip install gensim==4.0.1 -i pypi.mirrors.ustc.edu.cn/simple/
если ты правобработка естественного языкаЕсли вас заинтересовала статья, возможно?《НЛП-учебник по примерам》имейте то, что хотите
Если вы ищете некоторыеЗавершенныйСвязанныйПрактический случайДля справки вы можете найти?《100 случаев глубокого обучения》найти ременьисходный код и данныеФактический боевой случай, глубокое обучение Xiaobai рекомендует начинать с?《Xiaobai Введение в глубокое обучение》Изучите эту колонку!
Вам этого недостаточно, вы можете добавить меня в WeChat (mtyjkh_), чтобы оказать вам помощь в пределах ваших возможностей.
?код + данныеСмотри в конце статьи, войди в тему
1. Импорт данных
# 加载语料库文件,并导入数据
neg = pd.read_excel('data/neg.xls', header=None)#, index=None
pos = pd.read_excel('data/pos.xls', header=None)#
pos.head()
0 | |
---|---|
0 | Как родитель, вы должны иметь менталитет Лю Юна, продолжать учиться, продолжать добиваться прогресса, продолжать вливать в себя свежую кровь и сохранять себя... |
1 | У автора действительно строгий стиль британца, выдвижение мнений и аргументация.Хотя я не очень разбираюсь в физике, но все равно чувствую... |
2 | Авторы красноречиво поддерживают свои новые идеи, заимствуя подробные отчеты о работе по обработке данных и результатах вычислений. Почему в графстве Нидерланды однажды самая высокая производительность в Европе... |
3 | Удивительно использование автором "обнять" перед войной. Если Япония не будет побеждена, будет оккупация американскими военными, никаких бюрократических проволочек... |
4 | Автор любит читать, когда был подростком, и видно, что он прочитал бесчисленное количество классики, поэтому у него огромный внутренний мир. Его работа самая ценная... |
сегментация слов
# jieba 分词
word_cut = lambda x: jieba.lcut(x)
pos['words'] = pos[0].apply(word_cut)
neg['words'] = neg[0].apply(word_cut)
pos.head()
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
Loading model cost 0.502 seconds.
Prefix dict has been built successfully.
0 | words | |
---|---|---|
0 | Как родитель, вы должны иметь менталитет Лю Юна, продолжать учиться, продолжать добиваться прогресса, продолжать вливать в себя свежую кровь и сохранять себя... | [Быть, родители, должны, иметь, Лю Юн, такой, менталитет, и, постоянно, учиться,... |
1 | У автора действительно строгий стиль британца, выдвижение мнений и аргументация.Хотя я не очень разбираюсь в физике, но все равно чувствую... | [Автор, действительно, британский, строгий, и стиль, предложенный, взгляды, подлежит обсуждению,... |
2 | Авторы красноречиво поддерживают свои новые идеи, заимствуя подробные отчеты о работе по обработке данных и результатах вычислений. Почему в графстве Нидерланды однажды самая высокая производительность в Европе... | [автор, тирада, заимствовано, подробно, отчет, обработка данных, работа, и, результаты расчетов, поддержка, ... |
3 | Удивительно использование автором "обнять" перед войной. Если Япония не будет побеждена, будет оккупация американскими военными, никаких бюрократических проволочек... | [Автор, до войны, когда, бывало, "обнимашки", "удивительно, . , ... |
4 | Автор любит читать, когда был подростком, и видно, что он прочитал бесчисленное количество классики, поэтому у него огромный внутренний мир. Его работа самая ценная... | [Автор в молодом возрасте любит читать, и может видеть, он сгущает, бесчисленное,... |
# 使用 1 表示积极情绪,0 表示消极情绪,并完成数组拼接
x = np.concatenate((pos['words'], neg['words']))
y = np.concatenate((np.ones(len(pos)), np.zeros(len(neg))))
Во-вторых, обработка Word2vec
# 训练 Word2Vec 浅层神经网络模型
w2v = Word2Vec(vector_size=300, #是指特征向量的维度,默认为100。
min_count=10) #可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5。
w2v.build_vocab(x)
w2v.train(x,
total_examples=w2v.corpus_count,
epochs=20)
# 对每个句子的词向量进行均值计算
def average_vec(text):
vec = np.zeros(300).reshape((1, 300))
for word in text:
try:
vec += w2v.wv[word].reshape((1, 300))
except KeyError:
continue
return vec
# 将词向量保存为 Ndarray
x_vec = np.concatenate([average_vec(z) for z in x])
# 保存 Word2Vec 模型及词向量
w2v.save('data/w2v_model.pkl')
3. Модель классификации настроений машины опорных векторов обучения
model = SVC(kernel='rbf', verbose=True) # 构建支持向量机分类模型
model.fit(x_vec, y) # 训练模型
# 保存训练好的模型
joblib.dump(model, 'data/svm_model.pkl')
[LibSVM]
['data/svm_model.pkl']
# 输出模型交叉验证准确率
print(cross_val_score(model, x_vec, y))
[LibSVM][LibSVM][LibSVM][LibSVM][LibSVM][0.9156598 0.89623312 0.8047856 0.83961147 0.79436153]
4. Эмоциональное предсказание
# 读取 Word2Vec 并对新输入进行词向量计算
def average_vec(words):
# 读取 Word2Vec 模型
w2v = Word2Vec.load('data/w2v_model.pkl')
vec = np.zeros(300).reshape((1, 300))
for word in words:
try:
vec += w2v.wv[word].reshape((1, 300))
except KeyError:
continue
return vec
# 对电影评论进行情感判断
def svm_predict(string):
# 对评论分词
words = jieba.lcut(str(string))
words_vec = average_vec(words)
# 读取支持向量机模型
model = joblib.load('data/svm_model.pkl')
result = model.predict(words_vec)
# 实时返回积极或消极结果
if int(result[0]) == 1:
print(string, '[积极]')
return result[0]
else:
print(string, '[消极]')
return result[0]
# 读取课程评论数据
df = pd.read_csv("comments.csv", header=0)
comment_sentiment = []
# 用10条数据做测试
for string in df['评论内容'][:10]:
result = svm_predict(string)
comment_sentiment.append(result)
#将情绪结果与原数据合并为新数据
merged = pd.concat([df, pd.Series(comment_sentiment, name='用户情绪')], axis=1)
# 储存文件
pd.DataFrame.to_csv(merged,'comment_sentiment.csv',encoding="utf-8-sig")
print('done.')
还不错啊 [积极]
实验环境无法进行输入,可能是网络原因吧,或者其他问题 [消极]
abc [消极]
因为所在网络不稳定,当网络出现掉线后,实验楼界面就无法点击和输入了 [消极]
很不错,很好理解 [积极]
能不能自由选择学习章节 [消极]
连接远程库这块说的不够清楚 [消极]
挺不错的就是有视频就好多了 [消极]
浏览器打不开 [消极]
重启下 [消极]
done.
Наши окончательные прогнозы таковы:
Наконец, я пришлю вам копию.Помогите всем получить структуру данных, предлагаемую BAT и другими производителями первого уровня, написанный большими парнями из Google и Ali, очень полезен для студентов, у которых слабые алгоритмы или которые нуждаются в улучшении (код извлечения: 9go2):
Заметки Google и Ali по чистке Leetcode
и я отсортировал7 000+ электронных книг с открытым исходным кодом, всегда есть книга, которая может вам помочь ? (код извлечения: 4eg0)