: .
,然后统计字符对出
现的次数,每次将次数最多的字符对保存起来,直到循环次数结束。
import re
import sys
import collections
def get_stats(vocab):
pairs = (int)
for word, freq in ():
symbols = ()
for i in range(len(symbols)-1):
pairs[symbols[i],symbols[i+1]] += freq
return pairs
def merge_vocab(pair, v_in):
v_out = {}
bigram_pattern = (' '.join(pair))
p = (r'(?<!\S)' + bigram_pattern + r'(?!\S)')
for word in v_in:
w_out = (''.join(pair), word)
v_out[w_out] = v_in[word]
return v_out
vocab = {'l o w</w>' : 5, 'l o w e r</w>' : 2,
'n e w e s t</w>' : 6, 'w i d e s t</w>' : 3}
num_merges = 15
for i in range(num_merges):
pairs = get_stats(vocab)
try:
best = max(pairs, key=)
except ValueError:
break
if pairs[best] < 2:
('no pair has frequency > 1. Stopping\n')
break
vocab = merge_vocab(best, vocab)
print(best)
词义消歧
“bank”可能翻译成银行,也可能翻译成河岸。翻译目标词取决于这个词在文本中表示的义
项。WordNet 是英语的词汇数据库。其中包含一些常用词的词义义项。第11章 机器翻译 271
下载 nltk 中的 WordNet 语料库:
>>> import nltk
>>> ('wordnet')
[nltk_data] Downloading package wordnet to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Unzipping corpora\.
True
查询“bank”的同义词集合。
>>> from import wordnet
>>> syns = ("bank")
>>> print(syns[0].name())
同义词集合的定义:
>>> print(syns[0].definition())
sloping land (especially the slope beside a body
机器翻译 来自淘豆网m.daumloan.com转载请标明出处.