| 扬声器 |
抄本 |
| 斯科特·怀斯 |
调查性文本探索。我叫 Scott Wise,是 JMP 教育团队的高级经理。 |
| |
今天我有一个非常有趣的演示给大家看,这个演示的目的是让大家更加熟悉 |
| |
借助 JMP 和 JMP Pro 的功能以及进行文本探索的简单性,我们还可以向您展示一种不同的文本探索方式,例如,我可以像侦探一样调查某件事吗? |
| |
好的,我们来聊聊我奶奶做的辣椒,以及它和德州辣椒烹饪大赛有什么关系。开始之前, |
| |
让我们来揭秘一些关于文本挖掘的术语。对我来说,它实际上有五个简单的步骤。你需要花时间总结数据,确切地说,就是找出文本中哪些词出现得最频繁,甚至哪些词的组合出现得最频繁。 |
| |
所以??? 称之为浏览非结构化文本,然后这个,可以是任何东西。这可能是客户给你的一句话,关于你的产品或服务的表现。也可能是…… |
| |
可能是社交媒体,对吧,你可以根据评论了解人们喜欢什么或不喜欢什么, |
| |
有关您的产品或服务的一些东西,或者可能是这个人的一些东西,比如食谱。 |
| |
我甚至看到过在专利上这样做,当人们研究人们申请专利的热门事物是什么以及我们是否应该这样做时。 |
| |
所以,实际上,就是总结一下,找出其中哪些词是最重要的。接下来需要做一些准备,也就是列出你关心的单词的简短列表。 |
| |
当然,如果我们不打算将其可视化、分析,甚至不进行建模,那我们就不是JMP了。我们甚至可以进行一些高级建模。所以我将使用JMP Pro 15.1版本来做这件事。 |
| |
我一定会指出您可以在 JMP 中做什么,以及我实际上在哪里加入一点 Pro 来帮助进一步回答我的问题。 |
| |
文档、语料库和术语。文档将是那些…… |
| |
你分析的内容,基本上是文本的主体,文本的每一行。所以,这是我的食谱示例。 |
| |
这可能是不同的客户对您的产品或服务做出的评论。语料库实际上是您要处理的非结构化文本,即您要分析的文本主体。 |
| |
然后,术语就是那些你关心的、能帮助你回答问题的词语或词语组合。那么,我们来谈谈这个故事。你知道,我为什么想到要研究辣椒食谱吗?嗯,这又回到了 |
| |
大约 25 年前,当我第一次搬到德克萨斯州并来到一家大公司工作时,和德克萨斯州的大多数大公司一样,他们举办了一场大型德克萨斯辣椒烹饪比赛。 |
| |
我被邀请参加。每个人都参加了。但我还被要求做更多的事情,我被邀请担任评委。 |
| |
所以我本应该拒绝法官的。我以为这是给新人的荣誉,但我觉得他们只能给我这个机会,我找到了原因。 |
| |
先说说大家对我带来的辣椒的反响吧。我家一直用的辣椒食谱,来自我的祖母莉莲奶奶。 |
| |
这不是辣椒。这不是德克萨斯人认为的辣椒。 |
| |
现在好消息是,我得带点东西回家,因为我喜欢吃辣椒。他们除了辣椒,还考虑了别的东西。他们的辣椒里没有豆子。他们的辣椒味道不浓郁。非常辣,很糊。 |
| |
我的是牛肉。他们的主要是猪肉。他们全是猪肉。这是另一件让我惹麻烦的事。他们不仅不喜欢我奶奶做的辣椒,我差点没能通过评审。 |
| |
因为真正的德克萨斯人真正的荣誉是做出最辣的辣椒。所以你想打败你的邻居。你想打败你的同事。所以他们把各种辣得要命的辣椒和香料都扔了进来。 |
| |
我当时就想,光是尝尝味道就差点把我的胃弄破了,而且你还喝了那么多牛奶,想把热气散发出去。所以 |
| |
这简直是一场严峻的考验。所以我的建议是,除非你喜欢这种高温,否则就别来当评委了,对吧?这可不是什么好主意。但我想拿名次;这一直困扰着我。 |
| |
怎么,为什么我奶奶做的辣椒卖得不好?辣椒真的有好几种吗?它们又是从哪里来的? |
| |
事实证明,辣椒的历史真的很酷。你可以看到一些关于辣椒的很酷的历史博客和论文,它很可能来自 |
| |
中美洲,主要是墨西哥。也有一些清淡的菜肴,但在圣安东尼奥,它第一次出现在该州,我们现在知道它是辣椒, |
| |
在阿拉莫附近的老圣安东尼奥广场上。它被用来赶牛,后来开始流行起来,然后传到了美国中部,一直到中西部。 |
| |
我听说,圣路易斯世界博览会上有很多创新食品,它们一经展出就引起了轰动,这就是其中之一。辣椒被列入 |
| |
圣路易斯世界博览会确实很受欢迎。 |
| |
所以有很多不同的种类。所以我的想法是……我能不能用文本探索食材和食谱?把整个食谱都放进去,看看会发生什么。 |
| |
我要把它和什么比较呢?于是我查了一下传统产区,从德克萨斯州一直到密歇根州,有好几个。 |
| |
在德克萨斯州,我们有不同的品种。我品尝的是德州碗红辣椒酱。那是辣椒肉酱。 |
| |
玉米片派是橄榄球赛上常见的食物,但非常受欢迎,路易斯安那州也有自己的版本。新墨西哥州也有自己的版本,里面有青辣椒和鸡肉。俄克拉荷马州、堪萨斯城、斯普林菲尔德…… |
| |
伊利诺伊州的辛辛那提有天际线辣椒,人们把它淋在意大利面上。密歇根州的科尼岛有热狗,你知道,他们放的辣椒酱可是货真价实的辣。 |
| |
白辣椒,不知道产地。素辣椒。不过现在市面上有很多种口味。 |
| |
所以我说,如果我从每种风格中选取三种食谱并将其与我奶奶的辣椒进行比较,我能找到我想要的吗? |
| |
所以我们要这样做,当我逐步介绍这些步骤时,我将向您展示这些步骤的摘要,然后我将直接向您展示如何在 JMP 中执行此操作。 |
| |
第一步是汇总数据。我们想找到我们关心的词。 |
| |
现在当你输入 |
| |
任何文本分析,这些文本数据,就像我的成分,进入文本浏览器,它将通过库运行它 |
| |
正则表达式,并思考像常规这样的词,它们只是日常用语的一部分。 |
| |
而且它们也没什么用。如果我的列表中有“the”和“and”,它就没用了。所以它会试着帮你找出你不关心的单词。没错,它可以自定义。 |
| |
它已经内置了一个非常强大的工具,我用的就是这个。然后是词干提取。词干提取就是你去 |
| |
说出你想如何处理单词 - 所以“dice”是“dice”,“dicing”,你得到了复数,不同......不同...... |
| |
词根的不同版本。你是想把所有词根都算进去,还是想把它们分开算?所以这是一个需要考虑的问题。 |
| |
然后我们总结一下。我来把这些词拿出来。你看,我这里有一个单词表。后面的单词是未经编辑的,前面的单词是 |
| |
实际上,我们已经仔细研究过并缩减了单词表。所以,你需要做的就是找出你不关心的词,我们称之为停用词,简单来说,就是删除它们。然后把它们重新添加到我不关心的词库中。 |
| |
你也可以带一些真正重要的短语。有了这些短语之后,我们就能把它们可视化了。 |
| |
就我而言,我对食材非常感兴趣。这样我们就能知道哪些食材出现得最频繁。 |
| |
您经常会在这里看到词云,词云中的词越大,出现的频率就越高。 |
| |
你可以把它看成云状,就像一个……零散的布局,或者你也可以看一个顺序,你知道,最上面的那个是最大的词。就像 |
| |
幻灯片前面的图表。之后,我们要用它做一些事情。这样我们就可以创建一些基本的模型。 |
| |
最简单的方法之一就是,一旦我们知道了列表中哪些词是我们关心的, |
| |
我们可以把它加回数据表。这叫做保存文档词条矩阵。在这种情况下,一个简单的方法是使用二进制文件。所以我在这里有一个单独的列,你可以在我的右边看到,其中 |
| |
“洋葱”在菜谱那行里,对应着“1”。如果不在,对应着“0”,对应着“0”。所以,你可以在列里找到0和1。这样你就能看到什么是最重要的了。 |
| |
很多时候,你会尝试模拟一些事情,比如,如果我被困住了, |
| |
也许我已经根据这个评分了,我可以说,嗯,这是每个食谱对应的数字分数。我想看看哪些成分 |
| |
很常见,能带来高分。我可能正在这样做,所以尽量做得更有预测性一些。 |
| |
但在这种情况下,我会研究分组。我对分组很感兴趣,比如把食谱分组,看看我奶奶做的辣椒属于哪一种。所以我会向你们展示如何做到这一点。不过,我们先去 JMP 软件,看看如何在 JMP 中完成这些步骤。 |
| |
这是我的原始数据。 |
| |
在这里的每个文档中,每一行都是...得到了我的非结构化文本,在我的案例中,它只是原始成分。 |
| |
如果我点击这里的任何一个单元格,你会看到它实际上是复制的配料。所以这是第一个……路易斯安那州卡真辣椒的配料。 |
| |
其中有一些我关心的词,比如“番茄”、“辣椒粉”和“蜂蜜”。还有一些我不关心的词,比如“罐头”。 |
| |
我可能不太在意成分的计量单位,比如“一”、“两磅”、“茶匙”。那么我们该如何处理这个问题呢?我们该怎么做呢? |
| |
我们要去分析,然后去文本资源管理器,把这些成分放入文本列中。 |
| |
我要问一下词干提取的问题,如何提取所有词干。我觉得这很有帮助。然后我会用内置的正则表达式。 |
| |
我说好的,现在这是我的初始清单。 |
| |
所以我现在能做的就是,选择那些我不关心的内容。我不关心数字。所以我可以在这里高亮显示它们,右键点击,然后添加停用词,这样它就会被添加到我不关心的内容列表中。 |
| |
那“辣椒粉”呢?听起来像是需要单独添加的词。所以我右键点击这个短语,然后点“添加短语”,它就会把它添加进去。 |
| |
所以你继续这样做直到你得到一个精简的缩小列表。 |
| |
我只是要去跑我的 |
| |
我最终的列表就是用它做的。这是所有用正则表达式找到的单词,还有 |
| |
我添加的东西 |
| |
以及停用词。现在,这是我完成的术语和短语列表。我添加了这些我关心的短语。所以“洋葱”的得分最高,然后是“盐”,然后是“孜然”,最后是“辣椒粉”。 |
| |
正如你所猜测的,这看起来确实很棒,而且我们确实有词云。这是所有内容的词云。同样,在红色三角形选项下,我可以将其更改为顺序,以便更清晰地显示结果。 |
| |
如果我让它居中,这是一件很有趣的事情。你知道你可以给数据添加过滤器,而且有时你可以直观地找到答案,而无需执行任何其他操作。在这种情况下,我将深入探讨这个问题。 |
| |
红色三角形。我要获取本地数据过滤器。我只需要查看类型,然后说,好吧,让我们看看 |
| |
莉莲奶奶做的辣椒长什么样?你知道“西红柿”、“芸豆”、“牛肉”之类的。那跟卡真辣椒比起来怎么样? |
| |
他们分享的是辣椒粉和牛肉,不过,你知道,里面可能有些不同的东西。你知道,这和青辣椒酱相比怎么样? |
| |
你知道,更多的是青辣椒。里面有生辣椒、墨西哥辣椒、鸡汤,所有这类的东西,鸡汤。 |
| |
这确实很有趣,但可能还不足以让我弄清楚发生了什么。所以我去了 |
| |
(这是另一个……你的红色三角形下有所有的选项)我确实去确保(我可能需要在这里确保)我关闭了本地数据过滤器,确保选择了所有内容,我正在查看所有的条款。 |
| |
我这里得到了 299。我要右键点击,然后选择“保存文档术语矩阵”。 |
| |
当我这样做的时候,它会询问我想要以什么方式保存它,使用什么权重,什么样的权重。它基本上是二进制的,我可以使用频率,多少个词,你知道,在数据表中实际占有一席之地的最小词频。我已经完成了这些。 |
| |
所以如果我滑过去看看…… |
| |
事实上 |
| |
我先继续操作,然后给你们看看效果。我只需要说“保存文档术语矩阵”,然后点“确定”。 |
| |
现在,正如我在幻灯片上展示的那样,我得到了所有我关心的词条。这是第一个“洋葱”的词条。这是“辣椒粉”的词条,以及它们各自的 |
| |
你知道,食谱就是一排排的。 |
| |
所以我知道哪里有这种辣椒,我知道这种卡真辣椒里有辣椒粉。 |
| |
当为零时, |
| |
这个看起来像俄克拉荷马辣椒,或者不是,抱歉,新墨西哥辣椒没有辣椒粉,所以就是这样。这可以用于建模。所以你可以去 JMP 的“分析拟合模型”,然后……把它实际应用到某种模型中。 |
| |
但我要做的是,因为我其实并不想预测哪些成分会给我更高的分数。我没有任何…… |
| |
你知道这里的输出数据。我真的很想把它们组合在一起,我听说在 JMP Pro 中,我实际上可以做到这一点。所以我要回到我的幻灯片了。 |
| |
我将讨论数据分析。为了进行进一步的分析 |
| |
在 JMP Pro 中,它使您能够执行一些非常好的分组技术,这些是多变量方法,它们专门用于处理文本分析和处理那些与文本有关的文档术语矩阵。 |
| |
它使用了一种叫做潜在类别分析的方法。这是其中一个术语。如果你熟悉主成分分析,它和主成分分析类似。但基本上它会 |
| |
问我们想要查看多少个数据组或集群。它会查看整个多维空间 |
| |
在这些列中的所有内容和你的模型中重要术语的文档术语矩阵之间,我们得到的关于这个词的重要术语 |
| |
单词表,对吧?它会把它们分组。就我而言,我能够把它们分成三组。 |
| |
因此有一个集群,其中似乎有很多辣椒食谱,包括碎牛肉、番茄酱、辣椒粉和豆类。 |
| |
还有第二组,与鸡肉、青辣椒、生辣椒有很大关系。 |
| |
然后是第三组,其中也有很多辣椒,但它们更多的是红辣椒,并且是以猪肉为基础的,这很有道理。 |
| |
好的,当我创建这些聚类时,我能够使用逐行的聚类概率,这给了我这些个体的强度 |
| |
配方,我文档里的行,对,这些原始的……我的控制配方,它们落在哪里,它们的强度如何。我为什么要把它们分配到那个集群里?当我这样做的时候, |
| |
22 是我奶奶的聚类……也是我奶奶的对照。我发现她和其他一些菜谱(包括来自密苏里州堪萨斯城的菜谱)一起被聚类到了第一类。 |
| |
24号有一个非常接近。第三组的德州食谱里有辣椒、香料……很多香料,而且经常用猪肉,没有豆子,对吧?豆子出现在第一组里,但没有出现在第三组里,然后…… |
| |
集群二 |
| |
更适合,你知道,更适合青辣椒, |
| |
更多的是在新墨西哥州看到的东西,你知道,鸡肉辣椒,青辣椒。 |
| |
好吧,事情是这样的,我成功配对了,也找到了食谱。密苏里州的三个代表性食谱之一 |
| |
那实际上叫做堪萨斯城辣椒,它几乎与莉莲奶奶的辣椒完全一样。 |
| |
所以当我问妈妈这件事时,我说:“嗯,为什么会发生这种事?我不认为它来自密苏里州。”她说:“这一切都说得通。”她说:“莉莲奶奶, |
| |
她在密苏里州圣约瑟夫的一个农场长大,是家里唯一的女孩,还有11到12个兄弟。所以她做了很多饭菜。 |
| |
顺便说一句,她是唯一一个受过大学教育的人,所以在她生活的那个年代,她算是比较进步的,也是我最喜欢的亲戚之一,而她的食谱就充分体现了这一点。那就让我们现场演示一下吧。 |
| |
所以如果我去... |
| |
在此刻, |
| |
我回到之前创建的数据,在那个热点下,我会请求 JMP Pro 提供的这些附加模型。有一个使用该方法的潜在类别分析聚类文档, |
| |
基于二进制方式记录术语矩阵。所以它确实使用了一个文档……确实使用了那个文档术语矩阵,是的,所以你甚至不需要保存它,它会自动生成。 |
| |
还有一种潜在语义分析,它……它涉及更多的数学运算,采用更高级的方法,但两者基本上做的是同一件事。我特别喜欢这种潜在类别分析。所以我选择了它。 |
| |
我要求的是三个聚类,你可以试试看效果如何。我尝试了更多聚类,最后还是回到了三个。 |
| |
并且在其范围内 |
| |
选项,您可以按行查看聚类概率。 |
| |
在所有输出中,这是最合理的。记住,回到我的幻灯片,这帮助我找到了我奶奶的辣椒掉落的位置, |
| |
也就是22, |
| |
第22行。然后它还能和什么很好地结合呢?这就是我进行这项分析的方法。 |
| |
就这么简单。 |
| |
所以, |
| |
这真的快速介绍了 JMP 文本探索的功能,以及我如何使用 JMP Pro 和 |
| |
找到这些串,放上我奶奶做的辣椒,然后找到相应的食谱。如果你想了解更多,我有一个博客链接 |
| |
在演示文稿中,你可以……你可以点击,或者直接进入社区,输入“奶奶的辣椒”,就能找到那个博客。我还会提供给你,我们也会提供给你 |
| |
食谱。所以你也可以做莉莲奶奶的辣椒。 |
| |
因此我们很高兴今天能够向您展示这一点。 |
| |
请务必在问答中留下任何我们可以解答的问题。试试这个,试试其他方法 |
| |
您在工作中、在家中或任何具有非结构化文本数据的地方,如果您想探索并提出问题,您会发现这是一种非常棒的方法,非常强大,并且真正可以帮助您攻克数据的第三维度。 |