1

組織にとっての重要性によってフィルター処理する必要がある職務記述書の長いリストがあります。そのための簡単なヒューリスティックを開発しました。たとえば、タイトルに「管理者」や「ディレクター」などの単語が含まれている場合、それは重要です。このテストに失敗し、「代理」や「アシスタント」などの単語が含まれていれば、それは重要ではありません。

これは、Python で数行で簡単に実現できますが、もっと Pythonic な方法があるかどうか疑問に思っています。ここが今私がいる場所です。

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

完全に正常に動作しますが、可能であれば正しい方法で実行したいと思います! ありがとう。

4

3 に答える 3

4

それを行う1つの方法は、次を使用することです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 に答える