我是NLP和NLTK的初学者.我对NLP非常感兴趣,因此在一些当地机构参加了一个关于人工智能的周末课程,这需要我做一个完成课程的项目,我决定在NLP中完成.问题是,导师对这门课程并不擅长(据我说她只是一个骗子)(或者可能对教学不是很感兴趣,因为这是她最后一批,之后学院将把她送出去).所以我陷入了一个月到一个半月的时间里完成这个项目的情况,但作为一个天真的人,我觉得很难理解决定项目所需要的东西.(另外,由于我全职工作,我没有足够的时间专注于此).
由于以下原因,我考虑在python中使用NLTK工具包.(1)Python以易用性,快速原型设计和非常活跃的社区而闻名(考虑到我的时间非常短,而且由于我是专业的C程序员,我需要一种能够快速学习且易于学习的语言使用).
(2)NLTk有很好的评论,广泛的文档和非常活跃的社区.
所以问题是我应该采取什么样的项目,这样我才能学到一些东西,并能够及时完成项目.(我对NLP几乎一无所知,甚至不知道什么是语料库...... :()
所以,请为我提出一些我应该考虑的项目主题.
问候,
MicroKernel :)
大多数"初学者"项目旨在重新实现众所周知的算法,因此初学者可以通过针对已知解决方案验证其结果来学习.为此,我建议一些简单的东西,比如电子邮件垃圾邮件过滤器.您首先要创建一个培训文件,即将几封真实电子邮件的文本复制到CSV文件中,然后手动将其标记为垃圾邮件或非垃圾邮件,例如:
text|is_spam hi bob! how are you?|0 what time are you coming over|0 how to buy viagra now!|1
接下来,您将以与培训文件相同的格式创建一个测试文件,但显然有不同的示例.
然后,您将创建分类器/垃圾邮件过滤器.有许多不同的方法来实现垃圾邮件过滤器,但最基本的方法是简单地计算出现一个单词的频率is_spam = 0和is_spam = 1.例如,根据上面的培训文件,单词"viagra"与1个垃圾邮件分类相关联,但是0个非垃圾邮件分类,因此未来包含"viagra"一词的电子邮件也可能被归类为垃圾邮件.同样,"how"一词出现在1封垃圾邮件和1封非垃圾邮件中,因此不太可能表明明确的分类.
然后,您可以在训练文件上训练分类器,并通过在测试文件上运行它来计算它的准确性.
如果上述方法过于简单,可以通过首先标记词性来计算n-gram(单词组)甚至语法结构来增加其复杂性(例如,大量垃圾邮件通常是随机垃圾填充关键字,非垃圾邮件通常有些意义).您可以实现几种不同的分类器,并比较它们的准确性.
当然,还有更多的东西,但这些方法在互联网上有很好的记录,这是你的项目所以由你来进一步研究它.祝好运.
一些想法:
一个程序,它猜测输入文件的语言.你需要一些不同语言的样本; 维基百科是一个很好的来源.
基于文本语料库构建类似于语料库中的单词或句子的程序.
找一些与Voynich手稿有趣的事情.你可以在这里找到转录.
(顺便说一句,"语料库"只是"文本串"的一个奇特的词.来自维基百科:"一大堆结构化的文本(现在通常以电子方式存储和处理)."这个词通常指的是你的文本用于训练和测试你的算法,而不是它将在现场遇到的未知文本.)