问题标签 [text-normalization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavaScript 中的程序化重音减少(又名文本规范化或非重音)
我需要比较两个字符串,例如:
吕贝克 == 吕贝克
在 JavaScript 中。
为什么?好吧,我有一个自动完成字段,它使用 Lucene 发送到 Java 服务,其中地名自然存储(如 Lübeck),但也作为规范化文本进行索引,
这样,不知道输入“Mèxico”的人可以输入“mexico”并获得返回“Mèxico”的匹配项(在许多其他可能的点击中,例如“CaféMèxico,迪拜,阿联酋”)。
现在的问题是我无法更改服务以在服务器端进行任何突出显示,因此我在客户端 JavaScript 端突出显示类似的内容:
这有点花哨,因为我在输入中转义了特殊的正则表达式字符。这对于在点击开始时简单的一个单词匹配很好,但如果你突然希望支持像“london cafe”这样的多单词匹配,它真的会崩溃:
这不适用于说“london ca”(正在输入 london cafe),因为它会将“Jack London Cabin, Dawson City, Canada”标记为:"Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada"
[特别注意“ck”和“Ci”]
因此,我正在寻找一些不像以下内容那么疯狂的东西:
是否有一个编译表我可以参考映射一系列字符,这些字符是另一个字符的重音版本到该字符,我不是指普通的 unicode 图表。如果是这样,我是否可以避免使用奇怪的、可能很慢的 RegEx 语句?
关于赏金:
在我开始赏金之前,有两个答案,一个是让我用 Ruby 来做,另一个是MizzardX写的,它是我在问题中提出的基本形式的完成。现在不要误会我的意思,我真的很感激能像他那样完全解决问题,但我只是希望可能有另一种方法。到目前为止,似乎每个路过查看问题和答案的人都认为 MizzardX 可以很好地涵盖它,或者他们没有不同的方法。我会对不同的方法感兴趣,如果在赏金关闭之前它根本不可用,MizzardX 将赢得赏金(尽管在残酷的转折中,他的编辑使它成为社区 wiki 的答案,所以我不确定是否他会得到赏金的!)
unicode - 如何正确实施 Unicode 密码?
添加对 Unicode 密码的支持是开发人员不应忽视的一项重要功能。
尽管如此,在密码中添加对 Unicode 的支持是一项棘手的工作,因为相同的文本可以在 Unicode 中以不同的方式编码,并且您不希望因此而阻止人们登录。
假设您将密码存储为 UTF-8,请注意这个问题与 Unicode encodings 无关,它与Unicode normalization有关。
现在的问题是如何规范化Unicode 数据?
你必须确保你能够比较它。您需要确保下一个 Unicode 标准发布时不会使您的密码验证无效。
注意:仍然有一些地方可能永远不会使用 Unicode 密码,但这个问题不是关于为什么或何时使用 Unicode 密码,而是关于如何以正确的方式实现它们。
第一次更新
是否可以在不使用 ICU 的情况下实现这一点,例如使用操作系统进行规范化?
ruby-on-rails - 在 ruby 1.8.7 中处理不同类型的 utf 连字符
我们在 db 中填充了不同类型的连字符/破折号(在某些文本中)。在将它们与一些用户输入文本进行比较之前,我必须将任何类型的破折号/连字符标准化为简单的连字符/减号(ascii 45)。
我们必须转换的可能的破折号是:
这些都必须使用 gsub 转换为连字符减号(-)。我使用CharDet gem 来检测获取字符串的字符编码类型。它显示windows-1252。我试过Iconv将编码转换为 ascii。但它抛出了一个异常Iconv::IllegalSequence。
ruby -v => ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9.8.0]
rails -v => Rails 2.3.5
mysql encoding => 'latin1'
知道如何做到这一点吗?
gwt - GWT 中的 Unicode 规范化
是否有一些库可以用来在 gwt 中进行 unicode 规范化操作?(例如,在上下文中保证拉丁 O 等于西里尔 O)
c# - 从异常换行符规范化文本文件?
我有几个文本文件,在我想规范化的文本之间有很多换行符,但是文本之间的换行符没有模式,例如:
所以我想改变换行符的数量大于 X 到 Y 的地方所以让我们说,当有 5 个连续的换行符时,它变成 2,10 变成 3。
我目前的问题是我不知道我应该如何确定我必须规范化哪些行。
我知道我可以使用拆分来计算新行,以及其他方法,例如验证行是否为空等......但也许有一个简单的正则表达式或更好的方法来解决这个问题?
python - 哪种形式的 unicode 规范化适合文本挖掘?
我已经阅读了很多关于 Unicode 的内容,但我仍然对规范化及其不同形式感到非常困惑。简而言之,我正在从事一个项目,该项目涉及从 PDF 文件中提取文本并执行一些语义文本分析。
我已经设法使用一个简单的 python 脚本令人满意地提取文本,但现在我需要确保所有等效的正交字符串都有一个(并且只有一个)表示。例如,“fi”印刷连字应分解为“f”和“i”。
我看到 python 的unicodedata.normalize
函数提供了几种用于规范化 unicode 代码点的算法。有人可以解释一下:
- NFC
- NFKC
- NFD
- NFKD
我阅读了相关的维基百科文章,但对于我微弱的大脑来说,它太不透明了,无法理解。有人可以用简单的英语向我解释一下吗?
另外,您能否推荐一下最适合自然语言处理项目的规范化方法?
unicode - QWebView::findText 不适用于 Unicode 的组合变音符号
我正在使用QtWebKit
( QWebView
) 来显示文本,并且我想通过QWebView::findText
.
问题是必须显示的文本包含所谓的 Unicode 的组合变音符号,尽管它们应该忽略这些“标记”(字符),但它们QWebView::findText()
和 JavaScriptwindow.find()
都不会忽略这些“标记”(字符)。
例如,如果文本中有一个单词“ti̇̀krăs”(“t”,“i”,Combining Dot Above,Combining Grave Accent,“k”,“r”,“a”,Combining Breve,“s”), findText() 在搜索查询“tikras”(“t”、“i”、“k”、“r”、“a”、“s”)时无法找到该词。
在这种情况下,其他基于 WebKit 的浏览器(Chrome、Safari)似乎可以正常工作。
对于这种情况,我能做些什么吗?
unicode - 字符集比较
我需要紧急帮助。我无法比较字符集字符串。写入数据库table1的字符串utf-8 charset
看起来还是很奇怪: SADI 但是写入同一个数据库的table2的字符串SADI
是正常的。每当我比较两者时,它都会给出错误的结果。
知道如何进行比较吗?(实际上比较应该给出真实的结果)
知道如何将 SADI 插入
SADI
数据库。
两者都有望成为解决方案。
parsing - Neo4j Cypher 中的字符串规范化 - 如何?
问题背景:中文单词由字符组成,字符本身就是单词。我有 3 个节点代表中文单词,每个节点的属性词具有字符串值:节点(1):“a”节点(2):“b”节点(3):“ab”
问题1:使用Cypher从节点(3)开始,如何找到构成节点(3)字符串的节点(1)和(2)?
问题 2:如果还有一个节点 (4):“dabc”,我将如何找到不属于图形的所有长度为 1 的单词(“d”和“c”没有节点)?
我知道我可以明确地对这些节点之间的关系进行建模,但我想知道 Cypher 是否具有足够的表现力,可以在这里减轻我的负担。