删除空格后如何识别两部分术语?(“大数据”和“大数据”)

数据挖掘 Python nlp 文本挖掘
2021-10-14 08:51:39

我不是 NLP 专家,我有这个问题。

我有一个文本数据集,其中包含“大数据”和“大数据”之类的术语。

就我的目的而言,它们都是相同的。

如何在 NLTK (Python) 中检测到它们?

或者 Python 中的任何其他 NLP 模块?

3个回答

在 gensim 中有一个很好的实现:http: //radimrehurek.com/gensim/models/phrases.html

基本上,它使用数据驱动的方法来检测短语,即。常见的搭配。因此,如果您向 Phrase 类提供一堆句子,并且经常出现“大数据”这个短语,那么该类将学习将“大数据”组合成一个单一的标记“大数据”。这里有一个更完整的教程式博客文章:http: //www.markhneedham.com/blog/2015/02/12/pythongensim-creating-bigrams-over-how-i-met-your-mother-成绩单/

如果您有一个预制的术语字典,例如 NLTK,words.words()您可以简单地遍历字符串,在每个点添加一个空格并检查它们是否都是单词。几个可能的问题来自于此:1)复合词可能会被不必要地拆分,2)带有附加到复合词的术语的标签会产生多种可能的结果。这就是文档距离或词频之类的地方。使用一组单词的简单示例WORDS如下所示:

def check_spacing(term):
    possibles = []
    for i in range(1, len(term) - 1):
        l, r = term[:i], term[i:]

        if l in WORDS and r in WORDS:
            posibbles.append((l, r))

    # probs_check is a theoretical function that returns a numeric value
    # which determines how likely each pair of words is to be what you want
    possibles = sorted(possibles, key=probs_check, reversed=True)

    return ' '.join(possibles[0])

如果没有您使用的示例数据,您的问题似乎很模糊。您的数据集如何?如果您的数据中有分隔符,您可以只删除所有单词之间的空格,然后“大数据”和“大数据”将是相同的,如果这是您想要做的。