【问题标题】:What are the best algorithms to determine the language of text and to correct typos in python?确定文本语言和纠正 Python 中的拼写错误的最佳算法是什么?
【发布时间】:2020-03-13 04:53:05
【问题描述】:

我正在寻找可以告诉我文本语言的算法(例如,你好 - 英语、Bonjour - 法语、Servicio - 西班牙语)以及纠正英语单词的拼写错误。我已经探索过 Google 的 TextBlob,它非常相关,但是一旦我的代码开始执行,它就会出现“请求过多”错误。我也开始探索 Polyglot,但在 Windows 上下载库时遇到了很多问题。

TextBlob 的代码

*import pandas as pd
from tkinter import filedialog
from textblob import TextBlob
import time
from time import sleep
colnames = ['Word']
x=filedialog.askopenfilename(title='Select the word list')
print("Data to be checked: " + x)
df = pd.read_excel(x,sheet_name='Sheet1',header=0,names=colnames,na_values='?',dtype=str)
words = df['Word']
i=0
Language_detector=pd.DataFrame(columns=['Word','Language','corrected_word','translated_word'])
for word in words:

        b = TextBlob(word)
        language_word=b.detect_language()
        time.sleep(0.5)

        if language_word in ['en','EN']:
            corrected_word=b.correct()
            time.sleep(0.5)
            Language_detector.loc[i, ['corrected_word']]=corrected_word
        else:
             translated_word=b.translate(to='en')
             time.sleep(0.5)

        Language_detector.loc[i, ['Word']]=word
        Language_detector.loc[i, ['Language']]=language_word
        Language_detector.loc[i, ['translated_word']]=translated_word

        i=i+1

filename="Language detector test v 1.xlsx"
Language_detector.to_excel(filename,sheet_name='Sheet1')
print("Languages identified for the word list")**

【问题讨论】:

    标签: python nlp nltk textblob polyglot


    【解决方案1】:

    对语言进行分类的常用方法是收集有关字母或单词频率的汇总统计数据,并将其与已知语料库进行比较。 naive bayesian classifier 就足够了。请参阅https://pypi.org/project/Reverend/ 了解在 Python 中执行此操作的方法。

    也可以使用最可能单词与特定错字可能性的统计模型从语料库中纠正错字。有关如何在 Python 中执行此操作的示例,请参阅 https://norvig.com/spell-correct.html

    【讨论】:

      【解决方案2】:

      你可以使用它,但它几乎不可靠:

      https://github.com/hb20007/hands-on-nltk-tutorial/blob/master/8-1-The-langdetect-and-langid-Libraries.ipynb

      或者,您可以给紧凑型语言检测器 (cld v3) 或 fasttext 一个机会,或者您可以使用语料库检查目标文本中出现单词的频率,以确定目标文本是否属于相应的语料库。后者只有在您知道可供选择的语言集时才有可能。

      【讨论】:

        【解决方案3】:

        对于错字更正,您可以使用 Levenshtein 算法,该算法计算“编辑距离”。您可以将您的单词与字典进行比较并选择最可能的单词。对于 Python,您可以使用:https://pypi.org/project/python-Levenshtein/

        在此处查看 Levenshtein 编辑距离的概念:https://en.wikipedia.org/wiki/Levenshtein_distance

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-28
          • 2011-01-30
          • 2012-03-04
          • 2022-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-30
          相关资源
          最近更新 更多