我是否正确地将字符串传递给python库?

时间:2010-01-29 20:23:12

标签: python unicode encoding nlp

我正在使用名为Guess Language的python库:http://pypi.python.org/pypi/guess-language/0.1

“justwords”是一个带有unicode文本的字符串。我把它粘在包里,但它总是返回英文,即使网页是日文的。有谁知道为什么?我编码不正确吗?

§ç©ºéå
¶ä»æ¡å°±æ²æéç¨®å¾                                é¤ï¼æ以ä¾é裡ç¶ç
éäºï¼åæ­¤ç°å¢æ°£æ°¹³åèµ·ä¾åªè½ç®âå¾å¥½âé常好âåå                 ¶æ¯è¦é»é¤ï¼é¨ä¾¿é»çé»ã飲æãä¸ææ²»ç­åä¸å                                     便å®ï¼æ¯æ´è¥ç   äºï¼æ³æ³é裡以å°é»ãæ¯è§ä¾èªªä¹è©²æpremiumï¼åªæ±é¤é»å¥½å就好äºã<br /><br />é¦åç¾ï¼æ以就é»åå®æ´ç         æ­£è¦åä¸ä¸å
ä¸ç                           å¥é¤å§ï¼å



justwords = justwords.encode('utf-8')
true_lang =  str(guess_language.guessLanguage(justwords))
print true_lang

编辑:谢谢你的帮助。这是问题的更新。

我试图“猜测”这种语言: http://feeds.feedburner.com/nchild

基本上,在Python中,我得到了htmlSource。然后,我使用BeautifulSoup剥离标签。然后,我将它传递给图书馆以获取语言。如果我不进行编码('utf-8'),则会出现ASCII错误。所以,这是必须的。

soup = BeautifulStoneSoup(htmlSource)
justwords = ''.join(soup.findAll(text=True))
justwords = justwords.encode('utf-8')
true_lang =  str(guess_language.guessLanguage(justwords))

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:0)

看起来你应该能够按原样传递你的unicode。 guessLanguage将输入str解码为utf-8。因此,.encode('utf-8')是安全的,但不必要。

我浏览了源代码并假设它完全依赖于“trigrams”目录中用于语言检测的数据,并且它不会处理日语,因为那里没有“ja”子目录。正如John Machin所指出的那样,这是不正确的。所以我必须假设你的输入不是你想象的那样(这很难调试,因为它在你的问题中没有正确显示)。

答案 2 :(得分:-1)

谷歌说你的例子是中文的。他们有一个(更高级)webservice翻译文本并猜测语言。

他们有APIcode examples for Python