2010-04-03 69 views
12

我是NLP和NLTK的初学者。我对NLP非常感兴趣,因此 加入了一个本地机构的AI周末课程,这需要我 完成课程的一个项目,我决定在NLP中完成。问题是,这位教练对这门课不太好(根据我的观点,她 只是一个骗子)(或者可能对 的教学不感兴趣,这是她最后一批在此之后该研究所要发送她出去了)。所以我被困在一个月到一个半月期间完成 这个项目的情况,但作为一个天真的 这个领域的人,我感觉很难理解 决定所需的东西项目。 (另外,因为我正在全力工作,所以我没有足够的时间专注于此)。自然语言处理 - 初学者项目的想法

我考虑在项目中使用Python中的NLTK工具包,原因如下。 (1)Python以易用性,快速原型设计和非常活跃的社区而着称(考虑到我拥有非常短的时间,并且由于我是专业的C程序员,所以我需要一门可以快速学习的语言,并且很简单使用)。

(2)NLTk有很好的评论,广泛的文档和一个非常活跃的社区。

所以问题是我应该采取什么样的项目,这样我才能学到一些东西,并且能够及时完成项目。 (我知道NLP几乎没有,甚至不知道到底语料库是什么... :()

所以,请建议我一些话题,我应该考虑的项目。

问候,

微内核:)

+0

你看过http://www.nltk.org/projects? – miku 2010-04-03 19:09:19

+0

是的,我看到,但问题是作为一个初学者,我不知道哪一个会适合我(考虑到我在1个月的时间内完成它) 你可以PLZ建议什么适合像我这样的初学者。 – Microkernel 2010-04-04 03:55:58

+3

“我可以做什么项目”是一种问题。 – alvas 2014-02-11 15:53:27

回答

11

最“初学者”项目旨在重新实现公知的算法,所以初学者可以通过验证与已知的解决方案,他们的结果学习。为此,我会推荐一些简单的东西,比如垃圾邮件过滤器。

text|is_spam 
hi bob! how are you?|0 
what time are you coming over|0 
how to buy viagra now!|1 

接下来,你需要创建一个测试:你会通过创建培训文件,即几个真正电子邮件的文本复制到一个CSV文件,手动标记它们垃圾邮件或不是垃圾邮件,就像启动文件,格式与培训文件相同,但显然有不同的例子。

然后,您会创建分类器/垃圾邮件过滤器。实现垃圾邮件过滤器有很多种不同的方法,但最基本的方法是简单地计算一个字出现的频率,其中is_spam = 0且is_spam = 1。例如,根据上面的培训文件,“viagra”一词与1个垃圾邮件分类相关,但与0个非垃圾邮件分类相关,所以未来可能包含单词“viagra”的电子邮件也将被归类为垃圾邮件。同样,1个垃圾邮件和1个非垃圾邮件电子邮件中都会出现“如何”一词,因此不太可能指明明确的分类。

然后,您会在训练文件上训练您的分类器,并通过在测试文件上运行它来计算它的准确性。

如果上面的方法太简单了,可以通过计算n-gram(词组)组来增加其复杂性,或者通过首先标记词类来增加其复杂性(例如,大量垃圾邮件通常是随机垃圾填充关键字,非垃圾邮件通常有一定意义)。你可能会实现几个不同的分类器,并比较它们的准确性。

当然,还有一点比它强,但这些方法在互联网上都有很好的记录,而且这是您的项目,所以您需要进一步研究它。祝你好运。

+0

非常感谢你:) 这是一个非常有趣的项目,供我考虑。 (要了解随着时间推移的垃圾邮件模式,从过去几个月起,我一直在收集我收到的所有垃圾邮件(将它们放在一个单独的文件夹中)),现在我收集了超过2000多个垃圾邮件,猜测它的足够大的培训数据:)。现在它已经到了一些用处。哇!!! 感谢您的帮助队友:) – Microkernel 2010-04-05 10:25:51

7

一些想法:

  • 是猜测输入文件是写在你会需要不同语言的一些样品的语言的程序;维基百科是一个很好的来源。

  • 一个基于文本语料库的程序,构造类似于语料库中的单词或句子。

  • 找到一件与Voynich Manuscript有趣的事情。你可以找到抄录here

(顺便说一句,“文集”仅仅是“一大堆文字”一个奇特的词语,从Wikipedia:“一个庞大而结构化集合文本(现在通常以电子方式存储和处理)”这个词通常是指用于训练和测试算法的文本,而不是它在现场遇到的未知文本。)

+0

太谢谢你了:) 第一个看起来是在我抵达(猜这是谷歌工具栏用来findout网页的语言,并要求翻译的帮助)。 最后一个也看起来很有趣,但在目前的情况下,我是,我不能这样做我猜... 感谢您的建议:) – Microkernel 2010-04-05 10:30:14

0

您可以使用NLP在VOIP上记录客户支持呼叫的某些部分电话。用户输入的其他选项可以从键盘上获得。有了这个系统,您就不需要支持人员了。例如 - 将密码重置为组织中具有基于语音授权的电子邮件ID。