0

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

例如:原始文件

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。

按要求提供文件

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.

当我尝试将符号(逗号、冒号、分号等)放入新行并在每个句号 (.) 后包含一个额外的空格时,问题就开始了,例如:

Zomer
, 
1951
. 

De 
wereld

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

 fileHandle = open("C:\Language Model\Corpora\Computing Clients 3.txt",'r')

我尝试过使用循环和条件,但没有任何效果。到现在为止得到的所有结果是:

 AttributeError: 'list' object has no attribute 'find'

我知道我可能遗漏了一些东西,这就是为什么我要求您提供宝贵的帮助,因为文件非常大,知道 Python 可以为我完成手动操作是没有用的。

4

2 回答 2

3

如果你的文件名是paragraph.txt那么

f = open('paragraph.txt', 'r')

话= []

行 = f.readlines()

对于行中的行:

   words.extend(line.split())

上面的行列出了所有单词

而这些都是要删除的。并且,从那些话

对于我在范围内(len(words)):

    words[i] = words[i].replace('.' ,'')

    words[i] = words[i].replace(',' ,'')

    #here you can add a line to remove some other character

用于打印文字:

言归正传:

    print(word)
于 2013-02-10T20:00:46.473 回答
0

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

>>> 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',
 '.']
于 2013-02-08T15:11:36.243 回答