Hướng dẫn count distinct words in a sentence python - đếm các từ riêng biệt trong một câu python

Tôi là Python Newbie đang cố gắng hiểu câu trả lời được đưa ra ở đây cho câu hỏi về việc đếm các từ độc đáo trong một tài liệu. Câu trả lời là:

print len(set(w.lower() for w in open('filename.dat').read().split()))

Đọc toàn bộ tệp vào bộ nhớ, chia nó thành các từ bằng khoảng trắng, chuyển đổi từng từ thành chữ thường, tạo một tập hợp (duy nhất) từ các từ viết thường, đếm chúng và in đầu ra

Để thử hiểu điều đó, tôi đang cố gắng thực hiện nó trong Python từng bước. Tôi có thể nhập gạch văn bản bằng cách sử dụng mở và đọc, chia nó thành các từ riêng lẻ bằng cách tách và làm cho tất cả các chữ thường bằng cách sử dụng thấp hơn. Tôi cũng có thể tạo một tập hợp các từ độc đáo trong danh sách. Tuy nhiên, tôi không thể tìm ra cách thực hiện phần cuối cùng - đếm số lượng từ duy nhất.

Tôi nghĩ rằng tôi có thể hoàn thành bằng cách lặp qua các mục trong tập hợp các từ duy nhất và đếm chúng trong danh sách chữ thường ban đầu, nhưng tôi thấy rằng cấu trúc tập hợp không thể lập chỉ mục.

Vì vậy, tôi đoán tôi đang cố gắng làm một cái gì đó mà bằng ngôn ngữ tự nhiên là như thế, đối với tất cả các mục trong bộ, hãy cho tôi biết chúng có bao nhiêu lần chúng xảy ra trong danh sách chữ thường. Nhưng tôi không thể tìm ra cách làm điều đó, và tôi nghi ngờ một số hiểu lầm tiềm ẩn của Python đang giữ tôi lại.

  • CHỈNH SỬA -

Các bạn cảm ơn vì câu trả lời. Tôi vừa nhận ra rằng tôi đã không giải thích chính xác bản thân mình - tôi muốn tìm thấy không chỉ tổng số từ duy nhất (mà tôi hiểu là độ dài của tập hợp) mà cả số lần mỗi từ được sử dụng, ví dụ: 'The' đã được sử dụng 14 lần 'và' đã được sử dụng 9 lần, 'nó' đã được sử dụng 20 lần, v.v. Xin lỗi vì sự nhầm lẫn.


Giả sử chúng ta có một danh sách các từ. Những từ này có thể xảy ra nhiều lần. Chúng ta phải hiển thị tần số của những từ này và đếm có bao nhiêu từ riêng biệt.

Vì vậy, nếu đầu vào giống như Words = ["Book", "Sound", "Ngôn ngữ", "Máy tính", "Sách", "Ngôn ngữ"], thì đầu ra sẽ là (4, '2 1 2 1') Bởi vì có bốn từ riêng biệt, các từ thứ nhất và thứ ba đã xảy ra hai lần.

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

  • D: = một đơn đặt hàng để lưu trữ các mục dựa trên thứ tự chèn
  • Đối với mỗi w trong các từ, hãy làm
    • Nếu w ở trong d, thì
      • d [w]: = d [w] + 1
    • otherwise,
      • D [W]: = 1
  • Một cặp kích thước của danh sách tất cả các khóa trong D và tham gia tất cả các giá trị từ D vào một chuỗi sau đó trả về.

Thí dụ

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

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))

Đầu vào

["Book", "Sound", "Language", "Computer", "Book", "Language"]

Đầu ra

(4, '2 1 2 1')

Hướng dẫn count distinct words in a sentence python - đếm các từ riêng biệt trong một câu python

Cập nhật vào ngày 12 tháng 10 năm 2021 08:02:11

  • Câu hỏi và câu trả lời liên quan
  • Nhận các giá trị khác biệt và đếm chúng trong MySQL
  • Chương trình Python để đếm tần số của các từ xuất hiện trong một chuỗi bằng cách sử dụng từ điển
  • Chương trình Python để đếm các từ trong một câu
  • Mysql chọn khác biệt và đếm?
  • Chương trình Python để đếm các từ trong một chuỗi nhất định?
  • Chương trình để đếm số lượng chuỗi con riêng biệt trong s trong python
  • Đếm các từ trong một câu trong chương trình Python
  • Truy vấn MongoDB để chọn riêng biệt và đếm?
  • Đếm tần số của các yếu tố thường xuyên cao nhất trong Python
  • Python - Đếm tần số của chiều dài hàng ma trận
  • C chương trình để đếm các ký tự, dòng và số lượng từ trong một tệp
  • Chương trình để đếm số lượng ký tự riêng biệt của mỗi chuỗi con của một chuỗi trong Python
  • Python - Tần số đếm của Danh sách phụ trong danh sách đã cho
  • C# chương trình để đếm các từ trong một chuỗi đã cho
  • Chương trình Java để đếm các từ trong một chuỗi đã cho

Đếm số lượng từ duy nhất trong một chuỗi trong python #

Để đếm số lượng từ duy nhất trong một chuỗi:

  1. Sử dụng phương thức
    from collections import OrderedDict
    
    def solve(words):
       d=OrderedDict()
       for w in words:
          if w in d:
             d[w] += 1
          else:
             d[w] = 1
       return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])
    
    words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    print(solve(words))
    0 để chia chuỗi thành một danh sách các từ.
  2. Sử dụng vòng lặp
    ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    
    1 để lặp qua danh sách.
  3. Sử dụng phương thức
    ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    
    4 để nối tất cả các từ duy nhất vào danh sách.

Copied!

my_str = 'one one two two' unique_words = set(my_str.split()) print(unique_words) # 👉️ {'one', 'two'} length = len(unique_words) print(length) # 👉️ 2

Sử dụng hàm

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
3 để có độ dài của danh sách.

Copied!

my_str = 'one one two two' print(my_str.split()) # 👉️ ['one', 'one', 'two', 'two']

Chúng tôi đã sử dụng phương thức

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
0 để chia chuỗi thành một danh sách các từ và sử dụng vòng lặp
["Book", "Sound", "Language", "Computer", "Book", "Language"]
1 để lặp qua danh sách.

Trên mỗi lần lặp, chúng tôi sử dụng toán tử

["Book", "Sound", "Language", "Computer", "Book", "Language"]
8 để kiểm tra xem phần tử không có trong danh sách.

Các thử nghiệm trong nhà điều hành để thành viên. Ví dụ,

["Book", "Sound", "Language", "Computer", "Book", "Language"]
9 đánh giá thành
(4, '2 1 2 1')
0 nếu
(4, '2 1 2 1')
1 là thành viên của
(4, '2 1 2 1')
2, nếu không nó sẽ đánh giá thành
(4, '2 1 2 1')
3.

Copied!

my_str = 'one one two two' unique_words = set(my_str.split()) print(unique_words) # 👉️ {'one', 'two'}

(4, '2 1 2 1')
4 Trả về sự phủ định của
["Book", "Sound", "Language", "Computer", "Book", "Language"]
9.

Đặt đối tượng lưu trữ một bộ sưu tập không có thứ tự các yếu tố duy nhất, do đó việc chuyển đổi danh sách thành

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
2 loại bỏ tất cả các yếu tố trùng lặp.

Bước cuối cùng là sử dụng hàm

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
3 để có được số lượng từ duy nhất.

Copied!

my_str = 'one one two two' unique_words = set(my_str.split()) print(unique_words) # 👉️ {'one', 'two'} length = len(unique_words) print(length) # 👉️ 2

Hàm Len () trả về độ dài (số lượng mục) của một đối tượng.

Đối số mà hàm lấy có thể là một chuỗi (một chuỗi, tuple, danh sách, phạm vi hoặc byte) hoặc một bộ sưu tập (từ điển, bộ hoặc bộ đông lạnh).

Ngoài ra, bạn có thể sử dụng vòng lặp

["Book", "Sound", "Language", "Computer", "Book", "Language"]
1.

Đếm số lượng từ duy nhất trong một chuỗi bằng cách sử dụng cho vòng lặp #

Để đếm số lượng từ duy nhất trong một chuỗi:

  1. Tuyên bố một biến mới lưu trữ một danh sách trống.
  2. Sử dụng phương thức
    from collections import OrderedDict
    
    def solve(words):
       d=OrderedDict()
       for w in words:
          if w in d:
             d[w] += 1
          else:
             d[w] = 1
       return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])
    
    words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    print(solve(words))
    0 để chia chuỗi thành một danh sách các từ.
  3. Sử dụng vòng lặp
    ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    
    1 để lặp qua danh sách.
  4. Sử dụng phương thức
    ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    
    4 để nối tất cả các từ duy nhất vào danh sách.
  5. Sử dụng hàm
    from collections import OrderedDict
    
    def solve(words):
       d=OrderedDict()
       for w in words:
          if w in d:
             d[w] += 1
          else:
             d[w] = 1
       return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])
    
    words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
    print(solve(words))
    3 để có độ dài của danh sách.

Copied!

my_str = 'one one two two' unique_words = [] for word in my_str.split(): if word not in unique_words: unique_words.append(word) print(len(unique_words)) # 👉️ 2 print(unique_words) # 👉️ ['one', 'two']

Chúng tôi đã sử dụng phương thức

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
0 để chia chuỗi thành một danh sách các từ và sử dụng vòng lặp
["Book", "Sound", "Language", "Computer", "Book", "Language"]
1 để lặp qua danh sách.

Trên mỗi lần lặp, chúng tôi sử dụng toán tử

["Book", "Sound", "Language", "Computer", "Book", "Language"]
8 để kiểm tra xem phần tử không có trong danh sách.

Các thử nghiệm trong nhà điều hành để thành viên. Ví dụ,

["Book", "Sound", "Language", "Computer", "Book", "Language"]
9 đánh giá thành
(4, '2 1 2 1')
0 nếu
(4, '2 1 2 1')
1 là thành viên của
(4, '2 1 2 1')
2, nếu không nó sẽ đánh giá thành
(4, '2 1 2 1')
3.

(4, '2 1 2 1')
4 Trả về sự phủ định của
["Book", "Sound", "Language", "Computer", "Book", "Language"]
9.

Phương thức Danh sách.Append () thêm một mục vào cuối danh sách.

Copied!

my_list = ['bobby', 'hadz'] my_list.append('com') print(my_list) # 👉️ ['bobby', 'hadz', 'com']

Bước cuối cùng là sử dụng hàm

from collections import OrderedDict

def solve(words):
   d=OrderedDict()
   for w in words:
      if w in d:
         d[w] += 1
      else:
         d[w] = 1
   return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])

words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
3 để có được số lượng từ duy nhất trong chuỗi.