2012-10-03 43 views
1

我想tokenize input file in python請建議我我是python的新用戶。如何在Python輸入文件中標記自然英文文本?

我讀了一些有關正則表達式的thng,但仍有些混淆,所以請建議任何鏈接或代碼概述。

+0

你要什麼來標記?你需要創建一個通用的標記器嗎?或者你需要一個特定(編程)語言的標記器/解析器? –

回答

7

嘗試這樣:

import nltk 
file_content = open("myfile.txt").read() 
tokens = nltk.word_tokenize(file_content) 
print tokens 

的NLTK教程還滿容易遵循的例子:http://nltk.googlecode.com/svn/trunk/doc/book/ch03.html

+1

他OP可能不想標記自然文本,而是形式語言的源代碼。 nltk用於解析自然語言。對於正式語言,您可以使用層。我廣泛使用它來構建自定義編譯器。 http://www.dabeaz.com/ply/ 使用層也可以解析並編譯成抽象語法樹。 – nagylzs

+2

@nagylzs - 問題被標記爲「nltk」。 – del

0

使用NLTK

如果你的文件很小:

  • 用上下文管理器打開文件with open(...) as x,
  • 然後做一個.read()word_tokenize()

[代碼]標記化它:

from nltk.tokenize import word_tokenize 
with open ('myfile.txt') as fin: 
    tokens = word_tokenize(fin.read()) 

如果文件較大:

  • 打開與上下文管理with open(...) as x文件,
  • 用for循環逐行讀取文件
  • 記號化與word_tokenize()
  • 輸出線,以你想要的格式

[編號]:

from __future__ import print_function 
from nltk.tokenize import word_tokenize 
with open ('myfile.txt') as fin, open('tokens.txt') as fout: 
    for line in fin: 
     tokens = word_tokenize(line) 
     print(' '.join(tokens), end='\n', file=fout) 

使用SpaCy

from __future__ import print_function 
from spacy.tokenizer import Tokenizer 
tokenizer = Tokenizer(nlp.vocab) 

with open ('myfile.txt') as fin, open('tokens.txt') as fout: 
    for line in fin: 
     tokens = tokenizer.tokenize(line) 
     print(' '.join(tokens), end='\n', file=fout) 
相關問題