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"
如果您使用的是正则表达式,则有意义。例如。获得 shall
和 will 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
进一步编辑原始问题。
问题源于期望正则表达式与 "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"
如果您使用的是正则表达式,则有意义。例如。获得 shall
和 will 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