Regex 英语单词的真实定义?

Regex 英语单词的真实定义?,regex,nlp,Regex,Nlp,英语单词的最佳定义是什么 除了\w+,英语单词的其他情况还有哪些? 一些可能包括\w+-\w+或\w+'\w+;有些可能会排除像\b[0-9]+\b这样的情况。但我还没看到 就这些案件达成的任何普遍共识。 我们对这类问题有正式的定义吗? 你们谁能澄清一下吗 (编辑:扩大问题范围,使其不只是依赖于regexp。)我真的不认为regex能帮到你,英语(或任何语言)文本的问题在于上下文。如果没有它,你可以确定单词边界之间是文本、数字还是字符的随机集合,等等。对于NLP,我认为您将选择语言的一个子集并查

英语单词的最佳定义是什么

除了
\w+
,英语单词的其他情况还有哪些? 一些可能包括
\w+-\w+
\w+'\w+
;有些可能会排除像
\b[0-9]+\b
这样的情况。但我还没看到 就这些案件达成的任何普遍共识。 我们对这类问题有正式的定义吗? 你们谁能澄清一下吗


(编辑:扩大问题范围,使其不只是依赖于regexp。)

我真的不认为regex能帮到你,英语(或任何语言)文本的问题在于上下文。如果没有它,你可以确定单词边界之间是文本、数字还是字符的随机集合,等等。对于NLP,我认为您将选择语言的一个子集并查找特定的单词,而不是试图从字符串中提取所有的“单词”。

一个真正的英语单词几乎永远不会包含重音或外来字符-因此\w+可能会捕获比您想要的更多的单词,尽管英语中有许多单词是我们从其他语言中借用来的,但我们大多数人可能没有时间或倾向于费心去强调它们。我甚至懒得在那里完整地写“虽然”-\w+“\w+无法捕捉到这一点。总的来说,只要你的\w+正确地捕捉了你的单词,我想不出在单词中间可能会遇到的-和“上还有其他标点符号。

让我们具体一点,试着用例子来巩固基础

Is 'word' an English word?  YES

49th?  YES

NYSE?  YES

Résumé?  YES

Haight-Ashbury? YES/NO?

good-looking?  YES/NO?

P&G?  YES/NO?

1023?  YES/NO?

304-392-9999?  YES/NO?

3.14?  YES/NO?

检查一个单词是否是英语的最好方法是查字典。如果它在一本英语单词词典中,那么它就是一个英语单词。一个词也可能出现在英语词典和法语词典中。例如,“我”是一个法语和英语单词

我相信你可以在网上找到很多可下载的词典。你也可以自己做。例如,您可以下载,并假设找到的所有单词都是英语单词。您可以选择是否过滤掉数字

正则表达式不会告诉你一个单词是否是英语。例如,xyvfg与您的模式匹配,但肯定不是英语单词

编辑:
从理论上讲,使用英语音位学,可以判断一个单词的音标是否可以被一个说英语的人发音。有很多对说英语的人来说可以发音的单词实际上并不是英语单词。这可以考虑将来可能出现在英语中的单词。然而,音标和文本之间的翻译是一个相当具有挑战性的问题,因为同一音标可能有许多不同的拼写。我不知道是否有人做过这样的事。这可能是一个有趣的理论练习。我不确定这在现实世界的NLP中是否有用。

您的问题称为单词标记化。看看这里:

斯坦福大学是一个非常著名的NLP实验室。他们产生了一个最有效的英语语法分析器。该页面概述了一些常见的标记化问题,如

    特殊的域特定令牌:MAS*H,C++,IP地址…李>
  • 断字:男女同校,惠普
  • 搭配:旧金山、洛杉矶
  • 特定语法。。。
    • “旧金山-洛杉矶”机票广告
    • 省略空格等

还为单词标记化提供了一个简单的sed脚本,“它在大多数语料库上做得足够好”

regex的味道重要吗?(不同的编程语言使用的正则表达式语法略有不同。)@Unicom如果你能列举字符和大小写,它就不会。EBNF也可以。我只是认为regexp的定义在这方面更实用、更简洁。另外,不同编程语言的regexp语法在很大程度上是相似的。@OTZ:如果regex是NLP的一个好解决方案,那么web上就会有大量的例子:/n您的目的是什么?你为什么想知道英语单词是什么?@Jay用于NLP。你为什么还要问呢?问题是你不知道英语的子集是什么样子,因为每一秒都有新的术语出现。因此,您必须求助于类似regexp的解决方案,如果语料库更干净,比如说英语维基百科,这将很好。如果您不知道您实际要处理的子集,那么您将如何处理您所处理的内容?也许你需要指出你的NLP的目标是什么。所有这些关于正则表达式和NLP的大惊小怪-这真的很重要吗-无论哪种方式,语料库都必须被分解成单词。当然,如果你想有机会对标点符号进行处理,你就得跟踪它。@Will a:我想说正则表达式确实很重要,这就是OP所问的。是的,我完全同意正文需要分解成文字进行处理。这个问题是关于如何可靠地做到这一点。考虑到大量标点符号以及它们如何影响单词的上下文,以某种方式保持上下文至关重要。我想说的是,状态机将是更好的文本解析器,但我觉得即使是它也有局限性,可能只会形成文本的一个过程,为后续NLP引擎做准备。我认为唯一添加到该列表中的是符号,在一些公司名称中使用,人们错误地希望确保它不会与列表中相邻的“and”混淆。很好的总结。一个天真的正则表达式方法就可以了?:)相当多的真正的英语单词包含重音和非英语字符,由于无知的教育而被省略,并且越来越多的是由于英语键盘的本地字符集。即使在越来越普遍的Mac操作系统中,“特殊”字符也很容易访问,因此许多人不知道如何在语言上使用它们