自然语言处理模型

时间:2011-10-30 13:20:54

标签: nlp machine-learning

我是NLP的初学者,正在制作一个解析项目,并用英语理解用户对输入行的意图。

以下是我认为应该做的事情:

  1. 使用POS标记创建一个句子文本&用手标记每个句子的意图。
  2. 创建一个模型说:决策树并在上述句子上进行训练。
  3. 在用户输入上试用模型:
  4. 对用户输入句子进行基本的标记化和POS标记,并在上述模型上进行测试,以了解该句的意图。
  5. 这一切都可能是完全错误或愚蠢但我决心学会如何去做。我不想使用现成的解决方案,编程语言也不是问题。

    你们怎么做这个任务?选择哪种型号以及为什么?通常做NLP解析器,完成了哪些步骤。

    由于

2 个答案:

答案 0 :(得分:4)

我会使用NLTK。 有一本chapter on taggingchapter on parsing的在线图书。他们还提供python模型。

答案 1 :(得分:0)

这是一个基于NLTK和贝叶斯的简单示例

import nltk
import random 
from nltk.corpus import movie_reviews


documents = [(list(movie_reviews.words(fileid)),category)
             for category in movie_reviews.categories()
             for fileid in movie_reviews.fileids(category)
        ]

random.shuffle(documents)



all_words = [w.lower() for w in movie_reviews.words()]

for w in movie_reviews.words():
    all_words.append(w.lower())git b

all_words = nltk.FreqDist(all_words)


word_features = list(all_words.keys())[:3000]


def find_features(document):
    words = set(document)
    features =  {}
    for w in word_features:
        features[w] = (w in words)

    return features


print((find_features(movie_reviews.words("neg/cv000_29416.txt"))))

featuresets = [(find_features(rev),category) for (rev,category) in documents ]

training_set  =featuresets[:10]
testing_set = featuresets[1900:]

classifier = nltk.NaiveBayesClassifier.train(training_set)
print("Naive Bayes Algo Accuracy: ",(nltk.classify.accuracy(classifier,testing_set))* 100 )