我需要做一个实验,而且我是NLP的新手。我读过解释理论问题的书籍,但当谈到实际问题时,我发现很难找到一个指南。所以,请对NLP有所了解的人告诉我,并给我指出正确的道路,因为我觉得自己迷失了方向(有用的书籍,有用的工具和有用的网站)
我试图做的是拿一个文本,并找到特定的单词,例如动物,如狗,猫,...etc中,然后我需要提取这个单词和每边2个单词。例如
I was watching TV with my lovely cat last night.提取的文本将是
(my lovely cat last night)这将是我对机床的训练示例
Q1:将有大约100个类似于我上面解释的训练示例。我使用tocknizer来提取单词,但如何提取两边各有2个单词的特定单词(对于我们的示例,是所有类型的动物)。例如,我是否需要使用标签,或者您的想法是什么?
Q2:如果我有这些训练示例,我如何准备适当的数据集,以便将其提供给机床进行训练?我应该在这个数据集中写什么来指定动物,我是否需要提供其他特征?以及如何将其安排在数据集中。
你的许多话可能会对我有很大帮助,请不要犹豫,告诉我你所知道的
发布于 2011-03-15 11:05:54
您尝试做的事情有时被称为"Ontology Acquisition“或"Automated Ontology",这是一个相当困难的问题。大多数方法归结为“相似的单词将倾向于在相似的上下文中使用”。这样做的问题是,虽然有算法可以成功地从像你这样的数据中提取语义上有意义的关系,但从“这里有一堆术语在统计上与你的种子术语共享共同的分布”到“你的种子术语是动物名称,这里有一些其他动物名称”是具有挑战性的。例如,对猫、狗、蛇、鸟的训练,最终可能会给你带来类似“哺乳动物、腊肠、生物、两足动物”的结果,但根据你的需求,可能不是你所需要的。
下面是一篇研究论文的链接,它准确地实现了你想要做的事情。他们描述了他们的数据表示方法和使用的算法,并在动物名称问题上取得了至少一定程度的成功。此外,追踪他们的参考资料可能是一项卓有成效的工作。
http://www.cl.cam.ac.uk/~ah433/cluk.pdf
发布于 2011-04-01 04:34:12
首先,当我几年前开始在NLP工作时,作为一名自学成才的工程师,我完全理解你的沮丧。我建议您阅读NLTK这本书,这本书是对应用NLP的精彩介绍。特别是,请阅读处理原始文本数据以提取信息并将其用于标记的第3-7章。这本书是available online。
关于你的具体问题:
我认为,创建一个小的动物列表,然后从包含这些动物名称的语料库中提取句子,可能会容易得多。维基百科句子就是一个明显的例子。您可以使用此方法构建语料库,因为您已经知道每个句子中动物的名称。
// PSEUDO CODE
Dictionary animals = ["dog","dogs,"cat","cats","pig","pigs","cow","cows","lion","lions","lioness","lionesses"];
String[] sentences = getWikipediaSentences();
for(sent: sentences){
for(token: Tokenizer.getTokens(sent)){
if(animals.contains(token){
addSentenceToCorpus(sent)
} // else ignore sentence
}
}然后,您可以在这些句子上训练算法,以便可以使用经过训练的模型来提取新的动物名称。这种方法有一些警告,因为你的“训练数据”是人工收集的,但这将是一个很好的第一次体验。
https://stackoverflow.com/questions/5306719
复制相似问题