python - 使用 Python 在数据库中保留带有西类牙口音的记录

标签 python python-3.x spell-checking diacritics

我需要清除西类牙语数据库,但要求我必须保留重音符号。

例如,如果数据库包含“Administración”和“Administracion”,我必须将它们识别为相等,但保留带有重音标记的那个。经过一番研究后,每个解决方案(例如将 Unicode 转换为 ASCII 或使用 PyEnchant)都会保留不带重音符号的解决方案。

是否有任何库(适用于 Python 3.5)或方法来确定正确的库并保留它?

最佳答案

注意事项

根据数据库的内容,这可能是一项不平凡的任务,因为尽管可能存在拼写错误:

  • *管理 管理

西类牙语中还有许多单词对仅在重音上有所不同,但都是有效单词:

  • ejército ejercito ejercitó |

如果您只考虑名词,这个数字会减少很多,大部分减少到 foreign loanwords具有不同的压力:

  • 贝斯波尔 贝斯波尔

和一些本地单词multiple spellings :

  • período periodo | reúma reuma
<小时/>

查询

如果您不太可能遇到此类情况,您可以使用以下 sql 查询:

SELECT a.word AS "Good word", b.word AS "Bad word"
FROM   spanish_db AS a
JOIN   spanish_db AS b

--Spanish words have at most one accent so can safely nest REPLACE
ON     REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(a.word, "á", "a"), 
                                                       "é", "e"), 
                                                       "í", "i"), 
                                                       "ó", "o"), 
                                                       "u", "u") = b.word

--So as not to match identical words
AND    a.word != b.word

这将返回出现重音和非重音形式的所有单词对。您可以根据需要进行调整以编辑/删除/清理条目。

<小时/>

示例

Good word       Bad word
"acedía"        "acedia"
"aeróbic"       "aerobic"
"aeróstato"     "aerostato"
"afrodisíaco"   "afrodisiaco"
"alcalá"        "alcala"
"alvéolo"       "alveolo"
"alérgeno"      "alergeno"
"amoníaco"      "amoniaco"
"anémona"       "anemona"
"arcén"         "arcen"

关于python - 使用 Python 在数据库中保留带有西类牙口音的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50607804/

相关文章:

python - Pandas,如何将 pd.Dataframe 作为函数中的参数

python - 如何检查应该使用哪个Python版本

python - 迭代变量参数的元素

perl - 有人用 Perl 实现了 Peter Norvig 的拼写检查器吗?

mysql - 在 mysql 中,我们有 SOUNDEX() 或者我们可以使用 SOUNDS LIKE 来进行相关/错误的拼写或单词匹配,所以它们就像 BIGQUERY 中的任何东西一样

nlp - 有关拼写检查的文献?

python - PCA 上的组件数量受样本数量限制

python - 如何将 django 链接到我自己的 404 错误页面?

python-3.x - Pandas :筛选出包含空列表的列值

mysql - 使用sqlalchemy同时执行多条sql语句