例如:对于像输入电压这样的参数,
Alias names : V_INPUT, VIN etc.
现在,我希望软件能够将每个别名识别为相同。有什么包/方法可以实现这一点吗?
Nltk 只允许字典单词。
例如:对于像输入电压这样的参数,
Alias names : V_INPUT, VIN etc.
现在,我希望软件能够将每个别名识别为相同。有什么包/方法可以实现这一点吗?
Nltk 只允许字典单词。
如果您知道只有特定的变体,您显然可以自己制作一个查找表(即 Python 字典)。
否则,您可以尝试使用模糊匹配库,例如blurwuzzy。
这将根据您的参数列表(测量值)为您的搜索词提供“接近度”分数。这是一个如何使用它的示例:
In [1]: from fuzzywuzzy import process
In [2]: measurements = ["Voltage", "Current", "Resistance", "Power"]
In [3]: variants = ["VOLT", "voltage_in", "resistnce", "pwr", "amps"] # notice typos etc.
In [4]: for variant in variants:
...: results = process.extract(variant, measurements, limit=2)
...: print(f"{variant:<11} -> {results}") # See which two were found to be closest
...: best = results[0] # Take the best match by score (first in the list)
...: if best[1] < 70: # Set a threshold at 70%
...: print(f"Rejected best match for '{variant}': {best}")
VOLT -> [('Voltage', 90), ('Current', 22)]
voltage_in -> [('Voltage', 82), ('Resistance', 30)]
resistnce -> [('Resistance', 95), ('Current', 38)]
pwr -> [('Power', 75), ('Current', 30)]
amps -> [('Voltage', 26), ('Resistance', 22)]
Rejected best match for 'amps': ('Voltage', 26)
所以大多数工作都很好,包括错字示例。
显然这不是一种semantic搜索,因此amps不会以Current任何方式与之相关。
要走语义编码的道路,您可能需要研究“词嵌入”,它确实会根据词的语义含义尝试匹配词的真实含义。从这里开始,您可以查看Word2Vec或 GloVe` 嵌入。也许甚至有一个工具或库已经提供了这种能力。
这些方法本质上不会处理诸如拼写错误之类的问题,因此为了获得最佳结果,您甚至可以将这两种方法结合起来。
是的,有一对。我最喜欢的是 PyDictionary
或者,如果您使用的是 pip,请确保您是最新的并在终端中执行以下命令:
pip install PyDictionary希望这会有所帮助