quanteda kwic 正则表达式操作

quanteda kwic regex operation

进一步编辑原始问题
问题源于期望正则表达式与 "grep" 或某些编程语言的工作方式相同或接近。下面是我的预期,但它没有发生的事实产生了我的问题(使用 cygwin):

echo "regex unusual operation will deport into a different" > out.txt
grep "will * dep" out.txt
"regex unusual operation will deport into a different"


原题
正在尝试关注 https://github.com/kbenoit/ITAUR/blob/master/README.md
看到大家用这个包都觉得很好,想学习Quanteda
demo.R 的第 22 行中,我找到了这一行:

kwic(immigCorpus, "deport", window = 3)  

它的输出是-

[BNP, 157]        The BNP will | deport | all foreigners convicted  
[BNP, 1946]                . 2. | Deport | all illegal immigrants    
[BNP, 1952] immigrants We shall | deport | all illegal immigrants  
[BNP, 2585]  Criminals We shall | deport | all criminal entrants  

try/learn 我执行的基础知识

kwic(immigCorpus, "will *depo", window = 3, valuetype = "regex")

期待得到

[BNP, 157]        The BNP will | deport | all foreigners convicted

但我得到:

kwic object with 0 rows

类似的尝试

kwic(immigCorpus, ".*will *depo.*", window = 3, valuetype = "regex")

得到相同的结果:

kwic object with 0 rows

这是为什么?代币化?如果是这样,我应该如何编写正则表达式?

PS感谢这个很棒的包裹

ITAUR 存储库中的示例基于较旧的语法。您需要的是 phrase() 包装器 - 请参阅 ?phrase。您可能还应该复习一下您尝试使用 * 实现的正则表达式语法,因为它可能不是您想要的,而且正则表达式不能以“*”开头。 (This 可能会有所帮助。)默认的 "glob" 值类型可能会达到您想要的效果。

library("quanteda")
## Package version: 1.1.4
## Parallel computing: 2 of 8 threads used.
## See https://quanteda.io for tutorials and examples.

kwic(data_char_ukimmig2010, phrase("will deport"))

## [BNP, 156:157] nation.- The BNP | will deport | all foreigners convicted of crimes

kwic(data_char_ukimmig2010, phrase("will .*deport.*"), valuetype = "regex")

## [BNP, 156:157] nation.- The BNP | will deport | all foreigners convicted of crimes

您正在尝试将 短语 与您的模式相匹配。默认情况下,pattern 参数被视为 space 分隔的关键字列表,并针对此列表执行搜索。因此,您可能会使用

获得预期结果
> kwic(immigCorpus, phrase("will deport"), window = 3)
[BNP, 156:157] - The BNP | will deport | all foreigners convicted

A valuetype = "regex" 如果您使用的是正则表达式,则有意义。例如。获得 shallwill deport 使用

> kwic(immigCorpus, phrase("(will|shall) deport"), window = 3, valuetype = "regex")

   [BNP, 156:157]             - The BNP | will deport  | all foreigners convicted
 [BNP, 1951:1952] illegal immigrants We | shall deport | all illegal immigrants  
 [BNP, 2584:2585]  Foreign Criminals We | shall deport | all criminal entrants 

参见 this kwic documentation