首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >latin1的Regex和NLTK

latin1的Regex和NLTK
EN

Stack Overflow用户
提问于 2014-10-16 22:03:03
回答 1查看 266关注 0票数 1

我想用葡萄牙语标记一些文字。我认为我做的几乎一切都是正确的,但我有一个问题,我无法意识到什么可能是错误的。我在尝试这个密码:

代码语言:javascript
复制
    text = '''Família S.A. dispõe de $12.400 milhões para concorrência. A 
âncora desse négócio é conhecida no coração do Órgão responsável. '''
    pattern = r'''(?x)    # set flag to allow verbose regexps
         ([A-Z]\.)+        # abbreviations, e.g. U.S.A.
       | \w+(-\w+)*        # words with optional internal hyphens
       | \$?\d+(\.\d+)?%?  # currency and percentages, e.g. $12.40, 82%
       | \.\.\.            # ellipsis
       | [][.,;"'?():-_`]  # these are separate tokens; includes ], [
       '''

    print nltk.regexp_tokenize(text, pattern,flags=re.UNICODE)

得到这样的结果:

代码语言:javascript
复制
['Fam\xc3', 'lia', 'S.A.', 'disp\xc3\xb5e', 'de', '$12.400', 'milh\xc3\xb5es', 'para', 'concorr\xc3\xaancia', '.', 'A', '\xc3', 'ncora', 'desse', 'n\xc3', 'g\xc3\xb3cio', '\xc3', 'conhecida', 'no', 'cora\xc3', '\xc3', 'o', 'do', '\xc3', 'rg\xc3', 'o', 'respons\xc3', 'vel', '.']

它在某些方面完成了预期的工作,但将“Família”=“Fam\xc3”、“lia”或“cora o”=“cora\xc3”、“\xc3 3”、“o”等其他术语分开。

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-20 11:21:58

如果某人和我有同样的问题,只需更改默认的enconding。对于葡萄牙语,我使用‘拉丁语-1’集,并与它一起解码时,打印单词,以获得正确的字符。看看这个:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding:  latin-1 -*-
""" Spliting text in portuguese (enconding 'latin-1') using regex. 
"""
import nltk
import re

print "\n****** Using Regex to tokenize ******"
text = '''Família-Empresa S.A. dispõe de $12.400 milhões para concorrência. A 
âncora, desse negócio, é conhecida no coração do Órgão responsável. '''
pattern = r'''(?x)    # set flag to allow verbose regexps
     ([A-Z]\.)+        # abbreviations, e.g. U.S.A.
    | \w+(-\w+)*        # words with optional internal hyphens
    | \$?\d+(\.\d+)?%?  # currency and percentages, e.g. $12.40, 82%
    | \.\.\.            # ellipsis
    | [][.,;"'?():-_`]  # these are separate tokens; includes ], [
    '''
result = nltk.regexp_tokenize(text, pattern, flags=re.UNICODE) 
for w in result:
    print w.decode('latin-1')

print result

结果是:

代码语言:javascript
复制
****** Using Regex to tokenize ******
Família-Empresa
S.A.
dispõe
de
$12.400
milhões
para
concorrência
.
A
âncora
,
desse
negócio
,
é
conhecida
no
coração
do
Órgão
responsável
.
['Fam\xedlia-Empresa', 'S.A.', 'disp\xf5e', 'de', '$12.400', 'milh\xf5es', 'para', 'concorr\xeancia', '.', 'A', '\xe2ncora', ',', 'desse', 'neg\xf3cio', ',', '\xe9', 'conhecida', 'no', 'cora\xe7\xe3o', 'do', '\xd3rg\xe3o', 'respons\xe1vel', '.']

谢谢@JustinBarber的评论,为解决这个问题提供了一些线索。

全是这些人!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26414665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档