这是我第一次尝试NLP,所以请原谅我的无知。我正在寻找一种从用户的社交档案中提取兴趣/喜欢/爱好的方法。这里有一个例子,其中所有兴趣/喜欢/爱好都以粗体显示:
“我认为自己是一个相当多样化的人物…我是一名职业摔跤手,但我愿意为瓦力挡子弹。我在健身房训练得像一个单人灭绝机器,但我看《世界末日》时哭了。我会为AC/DC的音乐头摇摆,并且我认真考虑纹一个塞尔达传说的纹身。我对420友好。我喜欢某天晚上和兄弟会的人群一起派对,下一晚和我的火人节朋友们一起出去,之后玩光环和魔兽世界,再之后和不比40岁年轻的朋友们一起演奏。我最年轻的朋友16岁,我最年长的朋友66岁。我会在酒吧里唱卡拉OK,我是朋友们集体的精神医生/倾诉对象。”
这些档案是纯文本。没有任何与之相关的元标签或ID,它只是一个文本段落。
我的天真想法是将每个名词与Freebase匹配,看看它是否是活动/艺术家/电影/书籍等。问题是,尽管提到的多数实体是用户喜欢的,但她也会提到她不喜欢的东西,而我没有办法区分这两者。
我有两个问题:
- 我应该研究NLP的哪个子领域?一些可以谷歌到的算法/技术/作者将非常受欢迎。
- 这个问题有多难?
谢谢!
回答:
首先,除非使用NLP来做这件事是你的特定目标,否则请检查你的问题领域,看看是否可以完全避免使用NLP。
例如:
-
这些档案是否有标签(由网站或用户提供)?
-
网站的API提供了什么(假设你是通过这种方式访问这些数据的;如果你是在抓取数据,那么这当然不适用)?一个很好的例子是Facebook。如果你阅读用户的帖子,你会看到“摔跤手”、“卡拉OK”等词,但如果你查看通过图形API暴露的字段,你会发现这些活动几乎总是有一个关联的FB ID。
我不是这个领域的专家,但我可以推荐一些针对NLP的资源,这些资源对非专业人士或新手来说是可访问的。第一个是文本处理API。这个简单的网络服务使用REST和JSON IO。它是免费的,并且似乎有相当大的速率限制。
这个API似乎在很大程度上依赖于优秀的自然语言工具包(NLTK),这是一个在Python中成熟稳定的库,其中包括针对您问题中的模块,例如情感分析、标记和块提取等。
哪个特定的子领域最适合解决原始帖子的问题?我不知道,但我怀疑在NLTK中某个地方有一个模块可以满足您的需求。找到那个模块 hopefully 只是浏览API文档(按模块组织)的问题;阅读入门部分,其中包含对NLTK模块的出色调查以及每个模块的演示。