【问题标题】:Looking up Bigrams in Excel在 Excel 中查找 Bigrams
【发布时间】:2014-01-21 17:24:10
【问题描述】:

假设我在 Excel 的一列中有一个包含两个单词对的列表。这些词由空格分隔,因此典型的一对可能看起来像“极度幸福”。目标是在位于另一列的较大字符串中搜索这些“二元组”。问题是只有当两个单词在一起并用空格隔开时才能找到二元组。如果 Excel 可以在给定的较大字符串中的任何位置查找这两个单词,则更可取。至关重要的是,二元组每个占据一个单元格,因为为每个二元组分配了一个分数,事实上,使用 VLOOKUP 的函数根据二元组的值来计算这个值。将任何两个单词之间的空格更改为 - 或其他字符是否有意义?有没有办法让 Excel 一次查找每个值(也许通过识别这个字符并通过较大的字符串两次,即每个单词一次)?

例子:“昨晚的天气很冷,但是温暖的火给了我一些快乐。”

在这里,我们想在单词extremely 和单词happiness 中找到单词“extreme”。目前,Excel 无法成功执行此操作,因为它只会寻找“极度幸福”并确定不存在这样的字符串。

如果“极度幸福”下面的行中的二元组读取“天气给定”(出于某种原因),Excel 将检查该二元组是否存在于较大的字符串中并返回第二个分数。这样做是为了最后可以将每个分数相加。

【问题讨论】:

  • @pnuts 好点,我会编辑问题。
  • 你在某处有二元组列表吗?几个二元组可以在一个单元格中。示例:super extreme happiness is very important。示例中有多少个二元组?
  • @three 在给定的单元格中只能有一个二元组。不过,二元列非常大 - 大约 20,000 个二元。
  • 如果足够,请参阅下面的答案。在 20,000 个二元组中,我认为如果不需要真正的自动化,原生公式会更好。
  • @pnuts 我应该指定我的意思是一对两个单词作为二元组存储在单元格中,但不作为二元组进行搜索。

标签: excel sentiment-analysis vba


【解决方案1】:

这很容易用几个公式。请看下面的截图:

逻辑很简单。假设您的二元组在B1 中,我们可以在C1 中输入以下内容。这会将空格替换为*,这是 Excel 的通配符。

=SUBSTITUTE(B2," ","*")

然后我们将它连接起来给我们一个通配符的开头和结尾。

=CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*")

然后我们对语句使用简单的 COUNTIF(此处为 A1)向我们返回发生计数。

=COUNTIF(A2,CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*"))

一个简单的IF检查包含上面的条件>0,可以用来给我们YesNo

=IF(COUNTIF(A2,CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*"))>0,"Yes","No")

如果这有帮助,请告诉我们。

【讨论】:

  • 谢谢!我会更仔细地看一下并测试一下
  • @Stopwatch:不用担心。如果这对您有帮助,请将其标记为答案。谢谢,祝你好运。
  • @Stopwatch:您是否完全按照我的方式复制了上述设置?介意在您这边发布屏幕截图吗?
  • 很抱歉造成混乱,它运行良好 - 在修改公式以在工作簿之间工作时,我应该更加小心。
  • @Stopwatch:很高兴知道。 ;)
猜你喜欢
  • 1970-01-01
  • 2011-08-21
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 2016-06-28
  • 1970-01-01
相关资源
最近更新 更多