"skill" 匹配使用 python 的用户
"skill" matching of users using python
问题陈述是:根据匹配技能(S1、S2)为项目(ABC、DEF、....)确定合适的人选(X、Y、Z...) , S3,S4, S5, S6....).
示例:
有一个人 X 擅长 S1、S2、S3。
另一个精通 S4、S5、S6 的人 Y。
另一个擅长S1、S3、S5、S6的人Z。
然后有一个项目 ABC,它使用其中一项技能 - 比如说技能 S1。
所以我们应该能够为项目 ABC 识别人员 X,因为它使用技能 S1。
同样,如果另一个项目DEF来了,需要技能S5和S6,我们应该分配人Y和人Z,因为技能匹配。
是否有 python 等同于以最佳方式实现此目的?
我试过了:
import re, math
from collections import Counter
WORD = re.compile(r'\w+')
def get_cosine(vec1, vec2):
intersection = set(vec1.keys()) & set(vec2.keys())
numerator = sum([vec1[x] * vec2[x] for x in intersection])
sum1 = sum([vec1[x]**2 for x in vec1.keys()])
sum2 = sum([vec2[x]**2 for x in vec2.keys()])
denominator = math.sqrt(sum1) * math.sqrt(sum2)
if not denominator:
return 0.0
else:
return float(numerator) / denominator
def text_to_vector(text):
words = WORD.findall(text)
return Counter(words)
text1 = 'python, c, perl'
text2 = 'perl,c'
vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)
cosine = get_cosine(vector1, vector2)
print 'Cosine:', cosine
我不知道这是不是好方法。但如果数据不是很大,你可以这样做:
skill = {'x': [1, 2, 3], 'y': [4, 5,6], 'z': [5,6,7,1]}
all_employees = list(skill.keys())
needed_employees = []
required_skill = [5, 6]
for i in (all_employees):
c = 0
for j in required_skill:
if j in skill[i]:
c += 1
if c == len(required_skill):
needed_employees.append(i)
print(needed_employees)
问题陈述是:根据匹配技能(S1、S2)为项目(ABC、DEF、....)确定合适的人选(X、Y、Z...) , S3,S4, S5, S6....).
示例: 有一个人 X 擅长 S1、S2、S3。 另一个精通 S4、S5、S6 的人 Y。 另一个擅长S1、S3、S5、S6的人Z。
然后有一个项目 ABC,它使用其中一项技能 - 比如说技能 S1。 所以我们应该能够为项目 ABC 识别人员 X,因为它使用技能 S1。
同样,如果另一个项目DEF来了,需要技能S5和S6,我们应该分配人Y和人Z,因为技能匹配。
是否有 python 等同于以最佳方式实现此目的?
我试过了:
import re, math
from collections import Counter
WORD = re.compile(r'\w+')
def get_cosine(vec1, vec2):
intersection = set(vec1.keys()) & set(vec2.keys())
numerator = sum([vec1[x] * vec2[x] for x in intersection])
sum1 = sum([vec1[x]**2 for x in vec1.keys()])
sum2 = sum([vec2[x]**2 for x in vec2.keys()])
denominator = math.sqrt(sum1) * math.sqrt(sum2)
if not denominator:
return 0.0
else:
return float(numerator) / denominator
def text_to_vector(text):
words = WORD.findall(text)
return Counter(words)
text1 = 'python, c, perl'
text2 = 'perl,c'
vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)
cosine = get_cosine(vector1, vector2)
print 'Cosine:', cosine
我不知道这是不是好方法。但如果数据不是很大,你可以这样做:
skill = {'x': [1, 2, 3], 'y': [4, 5,6], 'z': [5,6,7,1]}
all_employees = list(skill.keys())
needed_employees = []
required_skill = [5, 6]
for i in (all_employees):
c = 0
for j in required_skill:
if j in skill[i]:
c += 1
if c == len(required_skill):
needed_employees.append(i)
print(needed_employees)