用于Ruby中的西班牙语检测的字符串解析

时间:2012-04-27 20:50:14

标签: ruby regex string parsing internationalization

我遇到的情况是我给了一个字符串,需要确定字符串的语言是西班牙语还是英语。我打算解析停用词 - 西班牙语(`de,es,si,y')vs英语('of','is','if','和')?如果西班牙语出现的次数多于英语出现次数,那么,我的结论是该页面是西班牙语。

是否有任何Ruby代码段可用于执行此操作?如果没有,那么用于字符串解析或正则表达式的好方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您的字符串包含句子(或至少包含一系列单词),则可以使用string.split(' ')将字符串拆分为单词数组。从那里,您可以使用.each遍历列表并处理每个单词。例如:

def detect_language(sentence)
    english_count = 0
    spanish_count = 0
    sentence.split(' ').each {|word|
        if looks_like_english(word)
            english_count += 1
        elsif looks_like_spanish(word)
            spanish_count += 1
        end
    }

    retval = ["spanish", "unknown", "english"]
    retval[(english_count <=> spanish_count) + 1]
end

答案 1 :(得分:0)

我有相同任务的经验。并且经过几天的讨论后决定拒绝正则表达式/文本解析解决方案。

现在我使用支持自动检测语言的翻译网络服务器(如google,bing,...)。我认为这是解决问题的最佳方法(当然,如果条件允许的话)