【发布时间】:2019-05-30 19:53:28
【问题描述】:
我正在阅读与 Recurrent Neural Network for Natural Language Processing 相关的博客文章,并正在尝试重新创建代码以进行练习。示例代码使用一种方法来读取名为file().read() 的.txt 文件。我不熟悉这种方法,想知道它是否包含在可导入模块中,或者至少它会返回什么,以便我可以使用不同的代码重新创建该方法。
我确实尝试替换with open(filename) as f,但它没有以与file().read() 方法似乎相同的格式返回数据。如果您正在寻找特定结果,“文件”对于 Google 来说并不是最简单的术语!
def train_char_lm(fname, order=4):
data = file(fname).read()
lm = defaultdict(Counter)
pad = "~" * order
data = pad + data
for i in xrange(len(data)-order):
history, char = data[i:i+order], data[i+order]
lm[history][char]+=1
def normalize(counter):
s = float(sum(counter.values()))
return [(c,cnt/s) for c,cnt in counter.iteritems()]
outlm = {hist:normalize(chars) for hist, chars in lm.iteritems()}
return outlm
【问题讨论】:
-
open(filename).read()应该可以工作。 -
我会按照您的建议使用
data = f.read()和with open(filename) as f:块而不是裸open().read(),还不如使用上下文管理器中的自动关闭。但除此之外,是的,这就是 Python 3+ 的替代品。
标签: python