首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python列表中的符号中解析单词

从python列表中的符号中解析单词
EN

Stack Overflow用户
提问于 2013-02-08 15:02:06
回答 2查看 246关注 0票数 0

我必须从一个词汇数据集中训练一个语言模型。为此,我只需要将所有文本安排在一列中,因为这是模型工作的唯一方式。到目前为止,我可以根据需要使用Python将文档分割成一个列,而不会出现任何问题。

例如:原始文档

佐默,1951年 wereld blauw van een wolkenloze zomerhemel,het goudgroen van koel,geruststellend naaldbos en het betonnen weg,die nieuw op,hij stond nog op en enkele kaart。

按要求提供文件

代码语言:javascript
复制
Zomer, 
1951.
De 
wereld  
bestond 
uit  
het  
wazige 
blauw  
van  
een 
wolkenloze   
zomerhemel, 
het            
goudgroen 
van  
koel, 
geruststellend  
naaldbos 
en   
het      
lijnrechte     
wit   
van  
de    
betonnen    
weg,  
die 
nieuw    
was,  
hij  
stond   
nog   
op      
geen  
enkele  
kaart.

当我试图将符号(逗号、冒号、分号等)放入一个新行并在每个句号(.)之后增加一个空白时,问题就开始了。例如:

代码语言:javascript
复制
Zomer
, 
1951
. 

De 
wereld

我还没有找到合适的方法。到目前为止,我已经尝试过使用.split().find()等函数的不同方式,但是没有任何积极的结果。打开文件后:

代码语言:javascript
复制
 fileHandle = open("C:\Language Model\Corpora\Computing Clients 3.txt",'r')

我尝试过循环和条件,但没有任何效果。到目前为止所取得的所有结果如下:

代码语言:javascript
复制
 AttributeError: 'list' object has no attribute 'find'

我知道我可能遗漏了什么,这就是为什么我请求您提供宝贵的帮助,因为这些文件太大了,手动执行它是没用的,因为知道Python可以为我做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2013-02-10 20:00:46

如果您的文件名为paragraph.txt,则

F=开始(‘段.open’,'r') 字= [] lines = f.readlines() 行为行: words.extend(line.split())

上面的一行列出了所有单词

这些是要移除的。从这些话来看

在范围内(连(字)): wordsi = wordsi.replace('.‘,'')字to = wordsi.replace(',’,'') #在这里您可以添加一行以删除其他字符

用于印刷下列文字:

用语言表达: 印刷(字)

票数 3
EN

Stack Overflow用户

发布于 2013-02-08 15:11:36

我认为,如果你确保标点符号与带有空格的文本分开,你就能实现你想要的结果。正则表达式在任何非字母数字字符之前加上一个空格,因此它可以与任何前面的单词分别为split

代码语言:javascript
复制
>>> import re
>>> text = "Zomer, 1951 De wereld bestond uit het wazige blauw van een wolkenloze zomerhemel, het goudgroen van koel, geruststellend naaldbos en het lijnrechte wit van de betonnen weg, die nieuw was, hij stond nog op geen enkele kaart."
>>> text2 = re.sub(r'([^a-zA-Z0-9-]+)',r' \1',text)
>>> text2
'Zomer , 1951  De  wereld  bestond  uit  het  wazige  blauw  van  een  wolkenloze  zomerhemel , het  goudgroen  van  koel , geruststellend  naaldbos  en  het  lijnrechte  wit  van  de  betonnen  weg , die  nieuw  was , hij  stond  nog  op  geen  enkele  kaart .'
>>> text2.split()
['Zomer',                                                                       
 ',',                                                                           
 '1951',                                                                        
 'De',                                                                          
 'wereld',
 'bestond',
 'uit',
 'het',
 'wazige',
 'blauw',
 'van',
 'een',
 'wolkenloze',
 'zomerhemel',
 ',',
 'het',
 'goudgroen',
 'van',
 'koel',
 ',',
 'geruststellend',
 'naaldbos',
 'en',
 'het',
 'lijnrechte',
 'wit',
 'van',
 'de',
 'betonnen',
 'weg',
 ',',
 'die',
 'nieuw',
 'was',
 ',',
 'hij',
 'stond',
 'nog',
 'op',
 'geen',
 'enkele',
 'kaart',
 '.']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14775379

复制
相关文章

相似问题

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