我一直在思考并致力于一种自制的算法,从数据集中提取恶意软件的名称。结果并不那么令人乐观。
我的数据集如下所示:
torrentlocker payment site
win32/somoto.e potentially unwanted
financial services;malicious sources/malnets;personal sites
tv/video streams;piracy/copyright concerns;entertainment;malicious sources/malnets
locky;malware;dark;stealing;infected我想要输出的内容是:
torrentlocker payment site -> torrentlocker
win32/somoto.e potentially unwanted -> win32/somoto.e
financial services;malicious sources/malnets;personal sites -> null
tv/video streams;piracy/copyright concerns;entertainment;malicious sources/malnets -> null
locky;malware;dark;stealing;infected -> locky一般来说,我认为可行的方法是提取有意义的单词(版权、支付网站、不想要的……)。也许有一种简单的方法(比抓取在线词典更好)获得所有有意义的单词,然后将它们与我的数据进行比较?通过搜索,我发现NLP (自然语言处理)是一种方法。如果有更好的方法,我希望有一些建议,特别是我更喜欢使用Java。
发布于 2017-07-28 04:51:29
您所描述的内容称为命名实体识别(NER)。有几个可用于NER的开源库,例如斯坦福NLPs系统,可以在https://nlp.stanford.edu/software/CRF-NER.html找到。这也都是用Java实现的。
如果您可以组合一个相当大的训练集,您应该能够使用Stanford的NER实现来训练模型。
https://stackoverflow.com/questions/45351640
复制相似问题