我必须编写一个程序(用Java)来识别名词,形容词,动词等的几个词性。该程序还应该识别数字(数字,例如10)和用普通英语写的数字(十,百等)和多得多。我不确定前进的方向是什么。有没有可以提供帮助的图书馆?这只能用正则表达式来完成吗?还是我需要学习 NLP?
请提出前进的道路。
我必须编写一个程序(用Java)来识别名词,形容词,动词等的几个词性。该程序还应该识别数字(数字,例如10)和用普通英语写的数字(十,百等)和多得多。我不确定前进的方向是什么。有没有可以提供帮助的图书馆?这只能用正则表达式来完成吗?还是我需要学习 NLP?
请提出前进的道路。
(1) OpenNLP
(2) 灵管
(3) 斯坦福自然语言处理
以上所有 3 项(基于 Java)将帮助您,开箱即用地识别 POS。
对于数字,请使用正则表达式。
词性 (POS) 标记是一项非常标准的 NLP 任务。理论上,您可以编写正则表达式来对非常简单的句子进行 POS 标记,但您不太可能使用正则表达式模型实现合理的覆盖率或准确性。你可以很好地训练一个相当简单的 HMM 模型或一个手工标记的训练集上的判别标记器。
但是要标记一个特定的语料库,您不一定需要学习 POS 标记的所有细节并自己动手——学习使用现有的库可能就足够了(例如 NLTK 或斯坦福 NLP 库)。
将文本数字表示转换为其阿拉伯形式(反之亦然)属于“文本规范化”的标签。正则表达式(或其他有限状态转换)在那里可能更有用,但同样,您可能希望在从头开始之前寻找满足您需求的现有解决方案。