在商业和科学研究中,了解他人对某个主题的看法至关重要,无论是汽车、餐厅这样的产品,还是某种服务。通过收集客户的电子邮件并使用某种方法来分类他们的意见,可以了解客户对看法,从而保持、改进或改变策略以提高客户满意度。此外,文本挖掘在工业和科学领域也有其他应用,比如在科学研究中,通过扫描文档和使用文本挖掘工具,可以填补研究中的空白,提高研究质量。
文本挖掘可以重新定义市场营销。它可以帮助企业对文档进行分类,为顾客或公司制定推荐列表。例如,通过分析特定句子并根据其内容赋予正面或负面的标签,然后使用测试数据集来计算其正面或负面的可能性,从而实现对数据的分类。
以曼彻斯特大学的一个项目为例,该项目分析了15,000项小鼠研究,但这些研究没有记录小鼠的性别和年龄,这对研究结果产生了不良影响。通过使用文本挖掘工具扫描文档,现在可以填补这一空白,并根据小鼠的性别和年龄的新信息改进研究。
人们对同一主题的反应各不相同,意见挖掘可以帮助衡量有多少人同意某个特定主题,以及他们的程度如何。这可以通过自然语言处理解决方案实现。另一种方法是使用朴素贝叶斯分类器。
朴素贝叶斯分类器是一种非常实用的数据挖掘算法,用于分类和解释数据。该算法通过为每个事件的发生提供概率来进行统计解释。
朴素贝叶斯分类器基于先前发生的某些条件(x1, x2, x3, …, xn)来计算特定事件发生的概率。例如,给定一个训练数据集,其中包含文本,根据其内容将其分类为正面或负面。然后,使用测试数据集,其中包含两个句子,其正面或负面的方向对来说是不明确的,目标是通过研究训练集来找到它们的方向。最合适的解决方案是使用朴素贝叶斯分类器,这在文本和意见挖掘中非常适用。
为了实现目标,需要了解或回顾一些关于统计和概率科学的概念。以下是一些基本定义:
当一个事件发生时,仔细查看它,计算特定事件发生的所有可能性,并称之为样本空间。例如,当抛硬币时,样本空间是两个,因为有S = {正面,反面}。当抛硬币时,只有一个事件发生,要么是正面要么是反面。概率是通过将事件发生的次数除以总样本空间来计算的。例如,抛骰子得到数字1的概率是1/6。还有其他事件可能会发生多次。在上表中,样本空间是8。发生“正面”事件的概率是4/8=0.5,因为正面在总共8次中发生了4次,对于“负面”也是如此,它在8次中发生了4次,发生负面的概率等于正面0.5。
基于另一个事件发生的概率称为条件概率,读作“在B条件下A的概率”。例如,一个患者首先有高血糖,这是“B”,然后测量发生糖尿病的概率,这是“A”,所以测量P(A=糖尿病|B=血糖)。在上面的例子中,测量在“正面”条件下“好”发生的概率。在“好”列中,有三是肯定的,这是正面和正面的组合,最后一列发生了四次,因此三除以四是0.75。
在其他问题中,有各种事件和不同的类别,其中一些特定类型的事件属于特定的类别。然后,在研究过去的信息后,希望将新条件分类到类别中。在上面的例子中,有不同句子的正面或负面。然后希望根据之前的分类对新句子进行分类。P(新句子|负面)或P(新句子|正面)意味着新句子是正面还是负面。因为句子包含不同的单词,所以应该用朴素贝叶斯分类器来解决。
这种方法与神经网络和决策树一样实用,适用于文本分类和医学诊断。朴素贝叶斯是一种方法,当有大量的数据样本,但它们从一组特征中选择有限的值,这些特征彼此独立且不相关。假设f是目标函数,x将从中选择值的范围,目标是计算最大概率。
如果想要一个舒适的IDE和专业编辑器,而不需要安装库,可以使用Anaconda & Spider。然后从开始菜单打开Anaconda Navigator并选择“Spider”:
Step 1: Open "Anaconda Prompt"
Step 2: Install "textblob" for Having Necessary Library
Step 3: Download Corpora
Step 4: Import Important Libraries such as textblob and textblob.classifiers
Python
from textblob.classifiers import NaiveBayesClassifier
from textblob import TextBlob
Step 5: Import Train and Test Set and Use Naive Bayes
Python
train = [
(
'It is good',
'positive'),
(
'I feel good about it',
'positive'),
(
'It is bad',
'negative'),
(
'It is good',
'positive'),
(
'It is bad',
'negative'),
(
'I feel bad about it',
'negative'),
(
'I feel it is not bad about',
'positive'),
(
'I feel not good about',
'negative')
]
test = [
(
'It is good',
'positive'),
(
'I feel bad about it',
'negative')
]
NB = NaiveBayesClassifier(train)
Step 6: Accuracy Computation
Python
print(
"Accuracy: {0}".format(NB.accuracy(test)))
Step 7: Test Algorithm With Different Sentences
Python
print(NB.classify('I feel good about spring'))
# 'positive'
print(NB.classify('I feel bad about dark'))
# 'negative'
Step 8: Opinion Mining or Text Mining for One Document Instead of Sentence
Python
# Put collect of text in one textblob
# and textblob gives the result by sum up wach result of sentence
# Classify a TextBlob
blob = TextBlob(
"I feel bad about dark." # 'negative'
"I feel good about spring. " # 'positive'
"finally darkness is bad.", classifier=NB)
# sum up='negative'
print(blob)
print(blob.classify())
for sentence in blob.sentences:
print(sentence)
print(sentence.classify())
print(sentence.sentiment.polarity)
贝叶斯方法通过收集特定知识领域的可能数据和知识,为这些数据分配概率分布,独立假设,然后在不观察未知参数的情况下,基于判断进行上述步骤。收集环境的原始数据,观察数据并与数据集进行比较,计算次级概率分布,根据次级概率的平均值进行预测,做出决策以减少结果中的错误。
每个样本的观察都可以使假设准确性偏离,通过结合先前的知识获得新的假设,贝叶斯方法能够以概率方式预测情况,通过综合多个假设对新样本进行分类。在某些情况下,如果贝叶斯方法不起作用,它们是评估其他方法的好尺度。
几乎需要完整的数据集(大量数据)作为前提。在没有这个训练数据集的情况下,必须估计概率。这种估计是基于先前的观察、经验……进行的,这种近似是非常昂贵的。