我正在尝试从困惑的数据集中提取测量值。 一些基本的示例条目是:
- 1.5 克扑热息痛
- 1.5g 扑热息痛
- 1.5克。扑热息痛
我正在尝试提取每个条目的测量值和单位,因此上述所有结果应该是: (1.5,克)
其他一些问题建议使用 NLTK 来完成此类任务,但我在执行以下操作时遇到了麻烦:
import nltk
s1 = "1.5g of paracetamol"
s2 = "1.5 gram of paracetamol"
words_s1 = nltk.word_tokenize(s1)
words_s2 = nltk.word_tokenize(s2)
nltk.pos_tag(words_s1)
nltk.pos_tag(words_s2)
哪个返回
[('1.5g', 'CD'), ('of', 'IN'), ('paracetamol', 'NN')]
[('1.5', 'CD'), ('gram', 'NN'), ('of', 'IN'), ('paracetamol', 'NN')]
问题是在第一个示例中单位“g”被保留为 CD 的一部分。我怎样才能得到下面的结果?
[('1.5', 'CD'), ('g', 'NN'), ('of', 'IN'), ('paracetamol', 'NN')]
在真实数据集上,单位更加多样化(毫克、毫克、千克、千克......)
谢谢!
最佳答案
您必须使用 nltk.regexp_tokenize
自行标记句子,例如:
words_s1 = nltk.regexp_tokenize(s1, r'(?u)\d+(?:\.\d+)?|\w+')
显然,它需要改进以处理更复杂的情况。
关于python - nltk 标记化测量单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536227/