我正在寻找可以告诉我文字语言的算法(例如,您好-英语,Bonjour-法语,Servicio-西班牙语),并且还纠正了英语单词的错字。我已经研究过Google的TextBlob,它非常相关,但是一旦我的代码开始执行,它就会收到“ Too many requests”错误。我也开始探索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")**
答案 0 :(得分:0)
您可以使用它,但是它几乎不可靠:
或者,您可以给紧凑型语言检测器(cld v3)或fasttext一个机会,或者您可以使用语料库检查目标文本中出现的单词的频率,以查明目标文本是否属于该目标语言。各自的语料库。仅当您知道可供选择的语言集时,才可以使用后者。
答案 1 :(得分:0)
对语言进行分类的一种常见方法是收集有关字母或单词频率的摘要统计信息,并将其与已知的语料库进行比较。 naive bayesian classifier就足够了。有关在Python中执行此操作的方法,请参见https://pypi.org/project/Reverend/。
也可以使用最可能的单词与特定错别字的可能性的统计模型从语料库中纠正错别字。有关如何在Python中执行此操作的示例,请参见https://norvig.com/spell-correct.html。
答案 2 :(得分:0)
对于拼写错误,可以使用Levenshtein算法,该算法可以计算“编辑距离”。您可以将单词与字典进行比较,然后选择最可能的单词。对于Python,您可以使用:https://pypi.org/project/python-Levenshtein/
在此处查看Levenshtein编辑距离的概念:https://en.wikipedia.org/wiki/Levenshtein_distance