如何在通配符中允许空格?quanteda的kwic函数使用疑问
问题原因解析
这个问题其实是搞混了quanteda里通配符和短语匹配的核心逻辑~
首先得明确两个关键点:
phrase()函数是用来定义多词短语匹配规则的,里面的空格代表「词与词之间的边界」,也就是要匹配相邻的多个独立词汇;- 通配符
*是针对单个词汇的前缀/后缀匹配,比如great*会匹配所有以great开头的单个词(像greatest、great),cake*会匹配所有以cake开头的单个词(像cake、cakes)。
再看你的两个查询:
- 当你执行
kwic(text, phrase("great* cake*"))时,这个规则是在找相邻的两个词:第一个词满足great*,第二个词满足cake*。你的文本里正好有greatest cake和great cakes这两组符合要求的相邻词,所以能返回对应的匹配结果。 - 但当你写成
phrase("great*cake*")时,这个规则变成了找一个单独的词汇——这个词必须同时满足「以great开头」且「以cake结尾」。可你的文本里根本没有这样的单个词,所有相关的都是两个独立分开的词,自然就找不到任何匹配,返回0行的kwic对象了。
内容的提问来源于stack exchange,提问作者MysteryGuy
相关产品推荐
相关产品推荐

