我有一个问答网站(非常近似),用户可以在其中输入问题以由我们的员工回答。我非常担心用户发布非问题,这是一种烦恼。到目前为止,我认为最好的方法是检测文本是否为意大利语(我们用户的语言)的系统,如果是,则根据常见的复制粘贴列表检查它是否不是复制粘贴。
所以,长话短说:用户会输入一些文本,我必须确保这是一个正确的意大利语问题,而不是随机字符。
我有一个问答网站(非常近似),用户可以在其中输入问题以由我们的员工回答。我非常担心用户发布非问题,这是一种烦恼。到目前为止,我认为最好的方法是检测文本是否为意大利语(我们用户的语言)的系统,如果是,则根据常见的复制粘贴列表检查它是否不是复制粘贴。
所以,长话短说:用户会输入一些文本,我必须确保这是一个正确的意大利语问题,而不是随机字符。
不知道你会说什么语言
http://www.easywayserver.com/blog/java-string-contains-example/
检查输入字符串(问题)是否包含任何禁用词将是一种方法。
伪代码
ListOfForbiddenWords;
if Language = Italian
if Input does not contain any of ListOfForbiddenwords
//It's fine
else
//Don't spam
else
//You're not Italian
不太确定检查字符串是否以特定语言编写的最佳方法是什么
如果您想要商业选项,可以使用 Rosoka 的语言检测。您可以在Rosoka Cloud上以大约 1 美元/小时的价格试用所有功能。语言 ID 作为独立库提供。因此,您可以向它提供您关心的示例输入,以查看它是否会返回您想要的内容。
像“jgujqkwfjpihoujlkfa”这样的随机文本将被标记为罗马化或基于底层代码块的标签,如果它是非 ascii 的话。即不是语言的输入将不会被标记为语言。
有许多免费的语言检测库。一个流行的例子是来自 LibreOffice的libexttextcat 。如果您不想要 C 库,则有许多克隆、端口和变体;请参阅例如http://odur.let.rug.nl/vannoord/TextCat/competitors.html以获取(不完整的,略微过时的)指针列表。
前段时间在这里问了一个类似的问题,答案列出了一些语言检测 API 解决方案。其中一个答案指向detectlanguage.com,该网站提供有限的免费语言检测服务。