我在数据库中有一个表,其中包含超过3,000,000个人的姓名。我需要给他们所有人一个分数(如果名称正确,则分数为1,如果名称部分正确,则分数为0.7 ...,如果名称完全不正确,则分数将为0)。为了实现这一点,我有一个包含300,000多个有效名称的列表。是否有机器学习算法来检测数据库中的名称与列表中的有效名称相比是否正确。由于数据库中的行数众多,因此我需要一种机器学习算法来执行此任务。有什么建议吗?
Scipy最好,因为它易于训练,但是在训练数据集时会出现问题。您可以参考虹膜数据集,在其中您可以预测具有输入值的虹膜种类的类型,您可以轻松构建相似的数据集,在您的代码中使用它请参阅scikit官方文档https://scikit-learn.org/stable/tutorial/basic/tutorial.html
问候,山羊
没有机器学习:
import random
import string
# Function to generate a random word
def gen_random_word(word_lenght=30):
return ''.join((random.choice(string.ascii_letters) for _ in range(word_lenght)))
# I simulate a list of valid names
list_valid_names = {
gen_random_word(5): 0
for _ in range(300000)
}
for _ in range(3000000):
# I create a new name
new_name = gen_random_word(5)
# If it is valid, I increment the counter
if new_name in list_valid_names:
list_valid_names[new_name]+=1
print('Nb of valid names: ', sum(list_valid_names.values()))
它在一台笔记本电脑上运行20秒钟(并找到大约2k个有效名称)