如何使用excel捕获所有大写单词进行文本分析?

hrysbysz  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(174)

我目前正在处理一个基于人们评论的大型数据集。该数据集包括2.5万个人对不同书籍的评论,文本列上的每一行都是唯一的,并且有很多句子。
我的问题是,我想编码文本是否包含任何ALL CAPS单词。例如,有人可以说:“This book is Amazing!I loved it!.”通常情况下,Excel允许您直接识别单元格何时完全大写,但这种情况比这更独特,因为我希望能够看到文本中的任何单词是否全部大写。任何建议都将受到欢迎。
我在谷歌上搜索了可能的解决方案,也询问了ChatGPT3.5和GPT 4。没有任何结果给了我一个可实施的建议(GPT给出的代码太长,Excel无法执行,它给出的较短的代码显然是错误的)

jvlzgdj9

jvlzgdj91#

假设您可以将数据放入Excel中的表中,您可以使用PowerQuery很容易地做到这一点,使用一些虚拟数据,如下所示。
选择表格中的一个单元格,然后转到Data =〉Get &Transform Data =〉From Table。

这将加载Power Query编辑器,如果您转到Add Column =〉Custom Column并输入以下内容,它将添加一个True/False列,指示每行

是否有大写字母

然后转到File =〉Close & Load To... x1c4d 1x
并选择将其加载到新工作表或现有工作表上的表中,它将给予数据

x 1c 6d 1x
HasCaps代码的工作原理是在每个空格“”处分割文本列并创建一个列表,然后检查列表中的每个项目在大写时是否相同,然后检查列表中是否有任何“true”。

nx7onnlm

nx7onnlm2#

假设输入数据在单元格A1中,并考虑问题的注解部分中指示的其他条件,您可以尝试以下操作:1)排除长度等于1的字,2)也考虑作为字定界符,

=LET(s,TEXTSPLIT(A1,{" ",","}), f, FILTER(s,(LEN(s) >1) 
 * EXACT(s, UPPER(s)),""), IF(@f="", FALSE, TRUE))

它可以封装在用户LAMBDA函数Z中,因此可以将其用于数组范围。

=LET(A, A1:A4, Z, LAMBDA(x, LET(s,TEXTSPLIT(x,{" ",","}),
 f, FILTER(s,(LEN(s) >1) * EXACT(s, UPPER(s)),""), IF(@f="", FALSE, TRUE))),
 BYROW(A, LAMBDA(x, Z(x))))

下面是输出:

它通过``或,分隔符标识单词,然后使用EXACT函数进行区分大小写的比较。
请记住,如果你有AMAZING01,它也会认为这种情况是有效的。如果你想排除它,你需要定义允许的字符列表(lk),并检查只有这样的字符可以出现。例如,对于大写字母感叹号和标点符号,你可以考虑以下几点:

=LET(lk, VSTACK(CHAR(ROW(65:90)), "!",".", ";"), s,TEXTSPLIT(A1,{" ",","}), 
 f, FILTER(s,(LEN(s) >1) * EXACT(s, UPPER(s))
  * ISERR(TEXTSPLIT(s, lk,,1)),""), IF(@f="", FALSE, TRUE))

您可以在这里检查ASCII字符列表,并以类似的方式添加您考虑的字符。例如,您可以使用CHAR(33)而不是"!"。如果您可以从ASCII字符列表中找到一系列有效的连续值,则使用该函数是有意义的。
表达式:TEXTSPLIT(s, lk,,1)从每个单元格上的s名称中提取所有无效字符,并在所有字符都有效时产生Empty Array#CALC!)类型的错误,这就是我们要寻找的条件。

相关问题