Ничего, как завершить выпускной? Обзор онлайн-курса Анализ настроений - Практический пример выпускного

задняя часть

Всем привет, я одноклассник К~

Приближается весна, приближается осень, а время просто тикает, я не знаю, как дела у всех с финальным проектом.

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()
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
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)

7 000+ электронных книг с открытым исходным кодом