1

我有一长串职位描述标题,我需要根据它们对组织的重要性进行过滤。为此,我开发了一个简单的启发式方法。例如,如果标题中包含“管理员”或“主管”之类的词,则它很重要。未通过此测试,如果它包含诸如“副手”或“助理”之类的词,那么它并不重要。

这很容易用 Python 中的几行代码来完成,但我想知道是否有更 Pythonic 的方式来做到这一点。这就是我现在的位置。

def in_fragment(phrase, fragments):
    for fragment in fragments:
        if fragment in phrase:
            return True
    return False

工作得很好,但如果可能的话,我会喜欢正确的方式!谢谢。

4

3 回答 3

4

一种方法是使用any

def in_fragment(phrase, fragments):
    return any(x in phrase for x in fragments)
于 2012-12-03T22:02:25.587 回答
2

嗯......可能FC的答案比我要写的更干净,但是因为我在我的电脑上测试了它sets,所以它是这样的:

#!/usr/bin/env python

a="this is a letter for the administrator of the company"
important = set(["administrator", "director"])

hits=important.intersection(set(a.split(" ")))
if len(hits) > 0:
    print "Wo! This is important. Found: %s" % (hits)

也许你会发现它很有用......对于某些东西...... :)

于 2012-12-03T22:06:34.977 回答
0
def rankImportance(titles, fragments):
    """titles is a list of job titles
       fragments is a list of sets. 
         At index 0: set(['administrator', 'director'])
         At index 1: set(['deputy', 'assistant'])
         etc..."""

    answer = collections.defaultdict(list)
    while titles:
        done = set()
        for i,title in enumerate(titles):
            for r,words in enumerate(fragments):
                if any(word in title for word in words):
                    answer[r].append(title)
                    delete.add(i)
        titles = [title for i,title in enumerate(titles) if i not in delete]

    return answer

这应该返回一个字典,其中的键是排名,值是职位列表。等级的值越小,它越重要。最小等级将为 0。

希望这可以帮助

于 2012-12-03T22:07:03.030 回答