2017-04-18 24 views
-2

私は、pythonには新しく、ツイートに参照要素があるかどうかを調べようとしています。配列の要素を文字列の順序で並べ替えます。

たとえば、もし私が猫という言葉を見つけることができれば、それは猫にも合っていなければならず、かわいい子猫も任意の順序で一致させることができます。しかし、私は理解してから、私は解決策を見つけることができません。どんな指導も高く評価されます。

import re 
lookup_table = ['cats', 'cute kittens', 'dog litter park'] 
tweets = ['that is a cute cat', 
      'kittens are cute', 
      'that is a cute kitten', 
      'that is a dog litter park', 
      'no wonder that dog park is bad'] 
for tweet in tweets: 
    lookup_found = None 
    print re.findall(r"(?=(" + '|'.join(lookup_table) + r"))", tweet.lower()) 

出力

['cat'] 
[] 
[] 
['dog litter park'] 
[] 

予想される出力:1つのワードのみのテキストです検索ワードに対する

that is a cute cat > cats 
kittens are cute > cute kittens 
this is a cute kitten > cute kittens 
that is a dog litter park > dog litter park 
no wonder that dog park is bad > dog litter park 
+0

??単数形を使用してください。 –

+1

実際に必要な出力も教えてください。 –

+0

@ KarolyHorvath私はあなたがそのことをどういう意味か分かりません。 – user6083088

答えて

0

、あなたは

for word in tweet 

などの検索ワードのために使用することができます"かわいい子猫"、あなたがexpどんな順序でもよい。ただ単語を分割し、ツイート文字列でそれを探します。

ここは私が試したものですが、効率的ではありませんが動作します。それを実行してみてください。

lookup_table = ['cat', 'cute kitten', 'dog litter park'] 
tweets = ['that is a cute cat', 
      'kittens are cute', 
      'that is a cute kitten', 
      'that is a dog litter park', 
      'no wonder that dog park is bad'] 

for word in lookup_table: 
    for tweet in tweets: 
     if " " in word: 
      temp = word.split(sep=" ") 
     else: 
      temp = [word] 
     for x in temp: 
      if x in tweet: 
       print(tweet) 
       break 
0

ここではどのようにしますか。私はlookup_tableがあまり厳密である必要はなく、複数形を避けることができると思います。

import re 
lookup_table = ['cat', 'cute kitten', 'dog litter park'] 
tweets = ['that is a cute cat', 
     'kittens are cute', 
     'that is a cute kitten', 
     'that is a dog litter park', 
     'no wonder that dog park is bad'] 
for data in lookup_table: 
    words=data.split(" ") 
    for word in words: 
     result=re.findall(r'[\w\s]*' + word + '[\w\s]*',','.join(tweets)) 
     if len(result)>0: 
      print(result) 
0

問題1:

単数/複数: は物事は私が活用し、複数のと、このような特異&を取り除くためのpythonパッケージを使用することになり、圧延得るために...

問題2:

分割と結合: 私は、どのように使用することができますか、堅牢なテストはしませんが、移動する必要があります。

import inflect 
p = inflect.engine() 
lookup_table = ['cats', 'cute kittens', 'dog litter park'] 
tweets = ['that is a cute cat', 
      'kittens are cute', 
      'that is a cute kitten', 
      'that is a dog litter park', 
      'no wonder that dog park is bad'] 

for tweet in tweets: 
    matched = [] 
    for lt in lookup_table: 
      match_result = [lt for mt in lt.split() for word in tweet.split() if p.compare(word, mt)] 
      if any(match_result): 
       matched.append(" ".join(match_result)) 
    print tweet, '>>' , matched