Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình sắp xếp các cụm từ dựa trên sự xuất hiện của chúng trong Python

Giả sử, chúng ta được cung cấp hai danh sách; 'cụm từ' chứa một vài cụm từ đã chọn và 'câu' chứa một số câu có thể chứa hoặc không chứa các cụm từ trong danh sách kia. Chúng ta phải tìm xem các cụm từ khác nhau trong danh sách đầu tiên có xuất hiện trong danh sách thứ hai hay không và sắp xếp các cụm từ trong danh sách đầu tiên dựa trên sự xuất hiện của chúng trong danh sách thứ hai. Chúng tôi trả về 'các cụm từ' trong danh sách đã sắp xếp dưới dạng đầu ra.

Vì vậy, nếu đầu vào giống như các cụm từ =['mạnh', 'bền', 'hiệu quả'], câu =['sản ​​phẩm bền và hiệu quả', 'mạnh và bền', 'nó hiệu quả', 'thích nó bởi vì nó hiệu quả '], thì đầu ra sẽ là ["hiệu quả", "bền", "mạnh"]

Cụm từ 'hiệu quả' xuất hiện trong các câu 0, 2 và 4. Nó xuất hiện nhiều nhất, vì vậy nó nằm ở đầu đầu ra. Các cụm từ 'bền' và 'mạnh' lần lượt xuất hiện trong câu 0 và 1, 1. Vì vậy, những cụm từ này có được các vị trí tiếp theo trong đầu ra.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • cnt:=một bản đồ mới
  • đối với mỗi tính năng trong các cụm từ, hãy thực hiện
    • cnt [tính năng]:=0
  • đối với mỗi phản hồi trong câu, hãy thực hiện
    • p:=một danh sách mới chứa các từ của một phản hồi
    • s:=một tập hợp mới từ p
    • đối với mỗi tôi trong s, thực hiện
      • nếu tôi có mặt trong cnt, thì
        • cnt [i]:=cnt [i] + 1
  • res:=một danh sách mới chứa các cặp (k, cnt [k]) cho mọi k trong cnt
  • sắp xếp lại danh sách dựa trên số lượng k
  • trả về res trong danh sách mà không bao gồm giá trị đếm k

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(phrases, sentences):
   cnt = {}
   for feature in phrases:
      cnt[feature] = 0
   for response in sentences:
      p = response.split()
      s = set(p)
      for i in s:
         if i in cnt:
            cnt[i] += 1
   res = [[k, cnt[k]] for k in cnt]
   res.sort(key = lambda x:(-x[1], phrases.index(x[0])))
   return [i[0] for i in res]

print(solve(['strong', 'durable', 'efficient'], ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient']))

Đầu vào

['strong', 'durable', 'efficient'],
['the product is durable and efficient', 'strong and durable', 'it is
efficient', 'like it because it is efficient']

Đầu ra

['efficient', 'durable', 'strong']