NLTK(Natural Language Toolkit)是一个用于自然语言处理(NLP)的强大开源库,广泛应用于学术研究和实际项目中。它提供了丰富的工具和资源,包括词汇资源、语料库、处理文本的算法和预处理工具,适用于各种NLP任务,如词性标注、句法分析、命名实体识别和情感分析。

NLTK 的设计目标是易于学习和使用,特别适合教学和研究。它包含了大量预定义的语料库和词典,如WordNet,可以帮助用户进行词汇和语义分析。NLTK 还提供了多种文本处理工具,如分词、词干提取、词形还原和停用词过滤,使得文本预处理变得简单高效。

此外,NLTK 具有良好的扩展性和灵活性,用户可以通过自定义函数和模型来扩展其功能。总之,NLTK 是一个功能全面且易于使用的NLP库,为自然语言处理提供了强大的支持和便利。

以下是一些常用的NLTK函数:

函数名分类功能
nltk.word_tokenize分词将文本分割成单词
nltk.sent_tokenize分词将文本分割成句子
nltk.pos_tag词性标注为单词添加词性标签
nltk.ne_chunk命名实体识别进行命名实体识别
nltk.FreqDist统计分析计算词频分布
nltk.Text统计分析创建文本对象进行分析
nltk.stem.PorterStemmer词干提取进行词干提取
nltk.stem.LancasterStemmer词干提取进行词干提取
nltk.stem.SnowballStemmer词干提取进行词干提取
nltk.stem.WordNetLemmatizer词形还原进行词形还原
nltk.corpus.stopwords语料库获取停用词列表
nltk.corpus.wordnet语料库使用WordNet词汇数据库
nltk.chunk.regexp.RegexpParser句法分析使用正则表达式进行句法分析
nltk.parse.ChartParser句法分析使用图表解析器进行句法分析
nltk.parse.RecursiveDescentParser句法分析使用递归下降解析器进行句法分析
nltk.translate.bleu_score.sentence_bleu机器翻译计算句子的BLEU得分
nltk.classify.NaiveBayesClassifier分类使用朴素贝叶斯分类器进行分类
nltk.classify.DecisionTreeClassifier分类使用决策树分类器进行分类

以下是参数注释、示例和简短说明:

  1. nltk.word_tokenize(text, language='english')

    • text: 要分词的文本字符串。
    • language: 指定分词的语言,默认为英语。

    示例:

    from nltk.tokenize import word_tokenize
    
    text = "This is a sentence."
    tokens = word_tokenize(text)
    print(tokens)

    说明:将文本分割成单词。

  2. nltk.sent_tokenize(text, language='english')

    • text: 要分句的文本字符串。
    • language: 指定分句的语言,默认为英语。

    示例:

    from nltk.tokenize import sent_tokenize
    
    text = "This is a sentence. This is another sentence."
    sentences = sent_tokenize(text)
    print(sentences)

    说明:将文本分割成句子。

  3. nltk.pos_tag(tokens, tagset=None, lang='eng')

    • tokens: 要标注词性的单词列表。
    • tagset: 指定使用的词性标注集,默认为 None。
    • lang: 指定语言,默认为英语。

    示例:

    from nltk import pos_tag
    from nltk.tokenize import word_tokenize
    
    text = "This is a sentence."
    tokens = word_tokenize(text)
    tagged = pos_tag(tokens)
    print(tagged)

    说明:为单词添加词性标签。

  4. nltk.ne_chunk(tagged_tokens, binary=False)

    • tagged_tokens: 词性标注后的单词列表。
    • binary: 是否进行二元分类,默认为 False。

    示例:

    from nltk import pos_tag, ne_chunk
    from nltk.tokenize import word_tokenize
    
    text = "Barack Obama was born in Hawaii."
    tokens = word_tokenize(text)
    tagged = pos_tag(tokens)
    entities = ne_chunk(tagged)
    print(entities)

    说明:进行命名实体识别。

  5. nltk.FreqDist(samples)

    • samples: 要统计频率的样本列表。

    示例:

    from nltk import FreqDist
    from nltk.tokenize import word_tokenize
    
    text = "This is a sample text with several words. This is another sentence."
    tokens = word_tokenize(text)
    freq_dist = FreqDist(tokens)
    print(freq_dist.most_common(5))

    说明:计算词频分布。

  6. nltk.Text(tokens)

    • tokens: 单词列表。

    示例:

    from nltk.text import Text
    from nltk.tokenize import word_tokenize
    
    text = "This is a sample text with several words. This is another sentence."
    tokens = word_tokenize(text)
    text_obj = Text(tokens)
    text_obj.concordance('sample')

    说明:创建文本对象进行分析。

  7. nltk.stem.PorterStemmer()

    示例:

    from nltk.stem import PorterStemmer
    
    stemmer = PorterStemmer()
    print(stemmer.stem('running'))

    说明:进行词干提取。

  8. nltk.stem.LancasterStemmer()

    示例:

    from nltk.stem import LancasterStemmer
    
    stemmer = LancasterStemmer()
    print(stemmer.stem('running'))

    说明:进行词干提取。

  9. nltk.stem.SnowballStemmer(language)

    • language: 指定词干提取的语言。

    示例:

    from nltk.stem import SnowballStemmer
    
    stemmer = SnowballStemmer('english')
    print(stemmer.stem('running'))

    说明:进行词干提取。

  10. nltk.stem.WordNetLemmatizer()

    示例:

    from nltk.stem import WordNetLemmatizer
    
    lemmatizer = WordNetLemmatizer()
    print(lemmatizer.lemmatize('running', pos='v'))

    说明:进行词形还原。

  11. nltk.corpus.stopwords.words(language)

    • language: 指定语言,默认是英语。

    示例:

    from nltk.corpus import stopwords
    
    stop_words = stopwords.words('english')
    print(stop_words)

    说明:获取停用词列表。

  12. nltk.corpus.wordnet.synsets(word)

    • word: 要查找的单词。

    示例:

    from nltk.corpus import wordnet
    
    synsets = wordnet.synsets('car')
    print(synsets)

    说明:使用WordNet词汇数据库。

  13. nltk.chunk.regexp.RegexpParser(grammar)

    • grammar: 定义句法分析的正则表达式。

    示例:

    from nltk import pos_tag, RegexpParser
    from nltk.tokenize import word_tokenize
    
    text = "The quick brown fox jumps over the lazy dog."
    tokens = word_tokenize(text)
    tagged = pos_tag(tokens)
    grammar = "NP: {<DT>?<JJ>*<NN>}"
    cp = RegexpParser(grammar)
    result = cp.parse(tagged)
    result.draw()

    说明:使用正则表达式进行句法分析。

  14. nltk.parse.ChartParser(grammar)

    • grammar: 定义句法分析的文法。

    示例:

    from nltk import CFG
    from nltk.parse import ChartParser
    
    grammar = CFG.fromstring("""
    S -> NP VP
    NP -> DT NN
    VP -> VBZ NP
    DT -> 'the'
    NN -> 'dog' | 'cat'
    VBZ -> 'chases'
    """)
    parser = ChartParser(grammar)
    sentence = ['the', 'dog', 'chases', 'the', 'cat']
    for tree in parser.parse(sentence):
        print(tree)

    说明:使用图表解析器进行句法分析。

  15. nltk.parse.RecursiveDescentParser(grammar)

    • grammar: 定义句法分析的文法。

    示例:

    from nltk import CFG
    from nltk.parse import RecursiveDescentParser
    
    grammar = CFG.fromstring("""
    S -> NP VP
    NP -> DT NN
    VP -> VBZ NP
    DT -> 'the'
    NN -> 'dog' | 'cat'
    VBZ -> 'chases'
    """)
    parser = RecursiveDescentParser(grammar)
    sentence = ['the', 'dog', 'chases', 'the', 'cat']
    for tree in parser.parse(sentence):
        print(tree)

    说明:使用递归下降解析器进行句法分析。

  16. nltk.translate.bleu_score.sentence_bleu(references, hypothesis, weights=None)

    • references: 参考翻译列表。
    • hypothesis: 待评估的翻译。
    • weights: 可选参数,指定各个n-gram的权重。

    示例:

    from nltk.translate.bleu_score import sentence_bleu
    
    reference = [['this', 'is', 'a', 'test']]
    hypothesis = ['this', 'is', 'a', 'test']
    score = sentence_bleu(reference, hypothesis)
    print(score)

    说明:计算句子的BLEU得分。

  17. nltk.classify.NaiveBayesClassifier.train(train_set)

    • train_set: 训练数据集。

    示例:

    from nltk.classify import NaiveBayesClassifier
    
    train_data = [({'feature1': 'value1'}, 'label1'), ({'feature2': 'value2'}, 'label2')]
    classifier = NaiveBayesClassifier.train(train_data)
    print(classifier.classify({'feature1': 'value1'}))

    说明:使用朴素贝叶斯分类器进行分类。

  18. nltk.classify.DecisionTreeClassifier.train(train_set)

    • train_set: 训练数据集。

    示例:

    from nltk.classify import DecisionTreeClassifier
    
    train_data = [({'feature1': 'value1'}, 'label1'), ({'feature2': 'value2'}, 'label2')]
    classifier = DecisionTreeClassifier.train(train_data)
    print(classifier.classify({'feature1': 'value1'}))

    说明:使用决策树分类器进行分类。

最后修改:2024 年 07 月 03 日
喵~