Single

培养使用数学方法来处理文本的思维

1.为什么要培养使用数学思维和方法来处理文本

文本通常由一个个字符构成,按照处理单元大小的不同它可以是字母、笔画、单词、词组等等,想到文本处理我们常常想到的是程序开发中的字符串操作,比如查找、替换、分割等等,这些操作实质上就是按照匹配的方法来进行处理,不需要将字符量化为具体的数字进行处理。

例如字符串操作中常见的操作是判断两个字符串是否相同,通常情况下操作方式如下:
if str1 == str2

这种操作的好处是易见的,简单而精确,只要两个字符串相同,那么肯定就是相同的。

但是通过”匹配”这样的操作方式并不适合现实生活中的很多场景,例如我们要比较两个句子所表达的情感是否相同。

句子1:这个蛋糕太好吃了
句子2:这个蛋糕的味道比其它店的蛋糕都要好

这两个句子的长度和出现的词很多都不相同,但是对于“我喜欢吃这个蛋糕(positive)”的情感却是相同的,如果使用上面的str1==str2的方法来进行处理是不可能的,即此处使用匹配的思想不奏效。因此需要将单词、句子进行数量化,从而使用数学的方法来进行处理

2.如何将单词、句子和文本数量化

当前自然语言处理中,很多关键性的问题都是如何更好地数量化单词、句子和文档。在单词级别,从传统的one-hot方法发展到了使用Word2Vec,GloVe等工具,然而对于句子和文档,目前并没有形成一个真正意义上的工具和方法。

3.什么是数学的思维和方法处理

使用数学的思维和方法进行处理简单地来说就是使用各种数学公式或者你自己设计的算法、模型来进行各种处理和运算,从而得到一个数学结果。

对于str1==str2来说,如果将str1从具体的字符转换为二维向量,则两者相等从数学上来说就要是两个的方向和长度要相同,这样就将传统的字符串比较转换为了数学上的向量计算方法。

将文本数量化,将要解决的问题转换为数学问题可以扩展我们解决问题的灵活性和多样性,当然也最容易出成果。比如str1是否和str2相同的问题,如果将其转换为平米坐标上的一个点(x,y),如果两者之间的距离小于一个设定的阈值k,则两者相等,此时数学上的各种求距离公式,如高斯距离,余弦距离等就可以被引入。

当然这样的一种处理方式也自然带来了结果上的不精确,严格意义上来说,str1与str2要相同必须是两者之间的距离为0,哪怕阈值是0.001,也会带来很多其他字符串和str1相同,而这正是当前使用统计的方法所面对的一个很严肃的问题,即你的结果有多大的可信性,比如你做了一个文本分类器,虽然你的结果有99%的准确性,但是如果在用于情报分类中,也许就有那么一个1%几率将一个很重要的情报自动分类到了不重要的类别中,造成的损失可想一下。

当然这并不是说将文本数量化,使用数学的方法去解决问题是不可靠的,而只能说我们在进行数学处理时需要进行更加严格的改进,从而使我们的结果适应我们的应用场景。

暂无评论

发表评论