情感分析问题
给定一个文本并输出它的情感值,情感值无非是正面、负面或者中性。
我们希望通过使用一种算法去识别一个文本的情感,这个问题本身属于文本分类问题。 如果只是正面或者负面,就是二分类问题;但如果是正面、负面和中性,则是三分类问题。
应用场景:
1)量化投资,就是通过AI技术去做投资比如股票买卖。在量化投资里,我们一般使用模型对未来的股市做预测,然后再进行买卖的决策。在这个任务上,我们一般会采用多因子模型, 时序预测模型等算法。
另外,很多公司通过情感分析的技术去实时监控是否有大量的负面消息在产生。一旦发现,需要公关部门去处理。比如一家金融公司,会实时抓取跟公司有关的公众号、论坛的文本信息然后自动判断是否有大量的负面情感在里面。
2)竞品分析也是很重要的一部分。通过情感分析技术来判断竞品推出了哪些产品,舆论对此产品的评价是怎么样的。通过这些信息,我们可以做到了解竞争对手,并做出及时的调整。
文本的预处理工作
1)分词,这是最基本的第一步。无论对于英文文本,还是中文文本都离不开分词。英文的分词相对比较简单,因为一般的英文写法里通过空格来隔开不同单词的。但对于中文,我们不得不采用一些算法去做分词。
使用jieba分词的例子:
1)在Anaconda3 中安装jieba :
conda install -c conda-forge jieba
或者一下命令:
conda install --channel https://conda.anaconda.org/conda-forge jieba
如果无法连上conda-forge可以尝试一下方式:
https://blog.csdn.net/zhaohaibo_/article/details/79253740
但是该方式安装的jieba无法在vscode中被识别
https://blog.csdn.net/a857553315/article/details/81410142
python文件名不能和jieba库名字重名,否则也无法正常运行。
一个使用jieba分词的例子,并加入关键词:
# encoding-utf-8
# reference : https://github.com/fxsjy/jieba
import jieba
# base on jieba segment reference: https://github.com/fxsjy/jieba
seg_list = jieba.cut("贪心学院是国内最专业的人工智能在线教育品牌", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
# TODO: 在jieba中加入"贪心学院"关键词, hint: 通过.add_word函数
#
jieba.add_word("贪心学院")
seg_list = jieba.cut("贪心学院是国内最专业的人工智能在线教育品牌", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\admin\AppData\Local\Temp\jieba.cache
Loading model cost 0.848 seconds.
Prefix dict has been built succesfully.
Default Mode: 贪心/ 学院/ 是/ 国内/ 最/ 专业/ 的/ 人工智能/ 在线教育/ 品牌
Default Mode: 贪心学院/ 是/ 国内/ 最/ 专业/ 的/ 人工智能/ 在线教育/ 品牌
我们还是要定义属于自己的专有名词的。如果我们考虑的是医疗领域,则需要把医疗领域我们比较关注的词先加入到词库里,再通过结巴工具做分词,毕竟很多的专有词汇并不存在于结巴的词库里。
大部分情况下只需要使用工具去分词就可以了,没必要自己造轮子。但有一些特殊情况,比如这些开源工具的效果很一般,或者它们缺少某些方面的考虑,则可能需要自己写一个分词工具。
实际上,自己