Python 3.x 如何区分两个并列词

Python 3.x 如何区分两个并列词,python-3.x,nlp,tokenize,Python 3.x,Nlp,Tokenize,我有一个评论数据集,我想使用NLP技术处理它。我做了所有的预处理阶段(删除停止词、词干等)。我的问题是,有些词相互关联,而我的函数不理解这些词。以下是一个例子: Great services. I had a nicemeal and I love it a lot. 如何将其从nicefine更正为nicefine?为您遇到的分词问题提供了一个很好的解决方案。长话短说,他使用一个单词(和双字符)频率的大型数据集和一些动态编程来将长串的连接词分割成最可能的切分 您可以下载带有源代码和词频的,

我有一个评论数据集,我想使用NLP技术处理它。我做了所有的预处理阶段(删除停止词、词干等)。我的问题是,有些词相互关联,而我的函数不理解这些词。以下是一个例子:

Great services. I had a nicemeal and I love it a lot. 
如何将其从nicefine更正为nicefine

为您遇到的分词问题提供了一个很好的解决方案。长话短说,他使用一个单词(和双字符)频率的大型数据集和一些动态编程来将长串的连接词分割成最可能的切分

您可以下载带有源代码和词频的,并根据您的用例进行调整。为了完整起见,这里是相关的位

def memo(f):
    "Memoize function f."
    table = {}
    def fmemo(*args):
        if args not in table:
            table[args] = f(*args)
        return table[args]
    fmemo.memo = table
    return fmemo

@memo
def segment(text):
    "Return a list of words that is the best segmentation of text."
    if not text: return []
    candidates = ([first]+segment(rem) for first,rem in splits(text))
    return max(candidates, key=Pwords)

def splits(text, L=20):
    "Return a list of all possible (first, rem) pairs, len(first)<=L."
    return [(text[:i+1], text[i+1:]) 
            for i in range(min(len(text), L))]

def Pwords(words): 
    "The Naive Bayes probability of a sequence of words."
    return product(Pw(w) for w in words)

#### Support functions (p. 224)

def product(nums):
    "Return the product of a sequence of numbers."
    return reduce(operator.mul, nums, 1)

class Pdist(dict):
    "A probability distribution estimated from counts in datafile."
    def __init__(self, data=[], N=None, missingfn=None):
        for key,count in data:
            self[key] = self.get(key, 0) + int(count)
        self.N = float(N or sum(self.itervalues()))
        self.missingfn = missingfn or (lambda k, N: 1./N)
    def __call__(self, key): 
        if key in self: return self[key]/self.N  
        else: return self.missingfn(key, self.N)

def datafile(name, sep='\t'):
    "Read key,value pairs from file."
    for line in file(name):
        yield line.split(sep)

def avoid_long_words(key, N):
    "Estimate the probability of an unknown word."
    return 10./(N * 10**len(key))

N = 1024908267229 ## Number of tokens

Pw  = Pdist(datafile('count_1w.txt'), N, avoid_long_words)
def备忘录(f):
“记忆函数f。”
表={}
def fmemo(*参数):
如果参数不在表中:
表[args]=f(*args)
返回表[args]
fmemo.memo=表格
返回fmemo
@备忘录
def段(文本):
“返回文本最佳分段的单词列表。”
如果不是文本:返回[]
候选项=([第一个]+第一个段(rem),拆分中的rem(文本))
返回最大值(候选项,键=Pwords)
def拆分(文本,L=20):
“返回所有可能(第一个,rem)对的列表,len(第一个)