将 TAG 格式转换为语料库的正则表达式

2024-01-11

我正在使用一个名为 AntConc 的语料库语言学工具,其中有一个文档,其中每个单词都被标记为词性(名词、形容词等),并且您可以使用特定的命令来提取匹配项。例如,如果我正在寻找一个名词(标记为 NN),我会使用*_NN它会找到文档中的每个名词。

我需要翻译我的*_TAG语法到 python 正则表达式中,我不知道该怎么做。比如我有一句话:*_PP$ *_NN *_DT *_JJ *_NN(这会转换为所有格代词、名词、限定词、形容词、名词;它会发现诸如“她的声音完全重复”之类的内容)采用 TAG 格式。

如何将此类内容更改为正则表达式?现在,我只讲一些基本的东西。稍后我会担心弄清楚如何做“或”和“如果这个那么这个”等等。

如果您需要有关标签的更多信息,请尝试搜索 POS 标签 CLAWS,它应该会为您提供一个列表。

非常感谢你的帮助!


所以我做了一些研究并发现这个PDF文件 http://www.laurenceanthony.net/software/antconc/releases/AntConc343/help.pdf描述嵌入标签和非嵌入标签的概念。您正在寻找嵌入的标签。那么如果我是正确的,输入会是这样的,对吧?

她_PP$ 声音_NN 和_DT 精确_JJ 重复_NN

只有这样,在更大的文本正文中,你不知道实际的单词,你只知道_XX tags.

在正则表达式中,你必须更具体*。你想要什么来代替*是单词中的 1 个或多个字符(字母,但也可能包含连字符?)。这使得这个名词:

[\w-]+_NN

这意味着一个字符类[...] http://www.regular-expressions.info/charclass.html of 单词字符\w http://www.regular-expressions.info/refcharclass.html和连字符-, 重复一次或多次+ http://www.regular-expressions.info/repeat.html, 其次是_NN.

对于所有格代词来说,它有一个$那里在正则表达式中有特殊含义,如果你想要特点 $而不是它的特殊含义,你需要用前面的转义\像这样:

[\w-]+_PP\$

最后,您要考虑单词之间允许使用哪些字符。可能只是空白,如空格、制表符和回车符,这将是\s+。也可能是“任何不是单词字符的字符”允许句点、逗号、引号、冒号等。那就是\W+(注意大写W与小写字母相反\w).

结合起来,这相当于:

[\w-]+_PP\$\W+[\w-]+_NN\W+[\w-]+_DT\W+[\w-]+_JJ\W+[\w-]+_NN

调试演示 https://www.debuggex.com/r/i6mnOsamsRlJavRN

To do “未确定数量的未知单词”你会这样做:

(?:[\w-]+\W+)*?

所以与单词匹配的部分[\w-]+以及介于两者之间的部分\W+被包装到非捕获组中(?:...)据说该组出现 0 次或多次*但尽可能少的次数?避免贪婪 http://www.regular-expressions.info/repeat.html#greedy。你可以看到here https://www.debuggex.com/r/ANNiX3Mh1wdyI4Vk并删除或添加 X 以查看它是否仍然匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 TAG 格式转换为语料库的正则表达式 的相关文章

随机推荐