从文本中提取属于某个键的单词

数据挖掘 Python nlp 文本挖掘 nltk
2022-03-14 18:58:16

我有一个产品的描述,比如这种形式的手机 -

“5.5”(13.97 厘米)全高清 1920 x 1080 像素 ips 屏幕大猩猩玻璃显示屏,分辨率为 401ppi - 450 尼特的亮度和对比度为 1000:1 第一部采用 theatremax 技术和扬声器的杜比全景声环绕声的手机 13mp f2.2 主摄像头 5p镜头元件,双 LED 双色调闪光灯,带 4p 镜头元件的 5mp 前置摄像头android v5.1 操作系统,配备 1.3 ghz mediatek 6753 64 位八核处理器,arm mali t720 gpu,3 gb ddr3 ram,16gb 内部存储器(可扩展至 128gb ) 和双 micro sim 双待 (4g+4g)3300mah 锂离子电池,带快速充电器 2.0,通话时间为 29 小时”

我必须提取描述的重要元素并将其映射到诸如 -

  • 显示尺寸 - 5.5
  • 显示分辨率 - 1920 x 1080
  • 模拟类型 - 双模拟
  • 内存 - 3gb
  • 存储 - 16GB。

我有一个映射键值对的字典。

示例 - {Ram:["3gb","3 GB","4 gb"],"Sim type":["Dual","Micro","Nano"]}

谁能建议如何做到这一点。我正在用python编码。如何使用 NLTK 进行操作。我应该使用 ngram 吗???任何使用自我标记的有用示例都会有所帮助。我看到的所有示例都使用已经定义的标签,如名词、人、组织等。我想将自己的字典作为语料库并训练模型,以便它从文本中提取相关的键值对。

2个回答

你有两个选择:

  1. 使用正则表达式根据您的字典提取感兴趣的特征。您可能有不同的结果,例如,双 sim 卡将是 micro 或 nano,因此您将从单一描述中获得两种类型。然而,这只是说,字典的结构不是很好。
  2. 训练您自己的 NER(命名实体识别)系统。为此,首先,您需要一个数据集,其中包含您的描述和标记的实体这将需要体力劳动,无论是您的还是付费的一些众包平台。当你有一个标记的数据集时,你可以使用 NLTK 来训练一个 NER。标记可以以您熟悉的任何方式完成,但一般来说,类 xml 标记是最佳选择,因为有很多方法可以训练 NER,并且大多数框架都知道如何解析类 xml 标记:

示例标记:

<screen_size>5.5"</screen_size> (13.97cm) 全高清<resolution>1920 x 1080</resolution>像素 ips 屏幕大猩猩玻璃显示屏等。

我认为在经过一些预处理(删除停用词、符号或小写字母等)后使用正则表达式是一个很好的解决方案。训练自定义 NER 的工作量太大。