Hướng dẫn count number of sentences python nltk - đếm số câu python nltk

Tôi đã viết mã sau để mã hóa đoạn đầu vào xuất phát từ tệp samp.txt. Có ai có thể giúp tôi tìm và in số câu, từ và ký tự trong tệp không? Tôi đã sử dụng NLTK trong Python cho việc này.

>>>import nltk.data
>>>import nltk.tokenize
>>>f=open('samp.txt')
>>>raw=f.read()
>>>tokenized_sentences=nltk.sent_tokenize(raw)
>>>for each_sentence in tokenized_sentences:
...   words=nltk.tokenize.word_tokenize(each_sentence)
...   print each_sentence   #prints tokenized sentences from samp.txt
>>>tokenized_words=nltk.word_tokenize(raw)
>>>for each_word in tokenized_words:
...   words=nltk.tokenize.word_tokenize(each_word)
...   print each_words      #prints tokenized words from samp.txt

hỏi ngày 22 tháng 2 năm 2011 lúc 5:54Feb 22, 2011 at 5:54

Hướng dẫn count number of sentences python nltk - đếm số câu python nltk

0

Hãy thử theo cách này (chương trình này giả định rằng bạn đang làm việc với một tệp văn bản trong thư mục được chỉ định bởi dirpath):

import nltk
folder = nltk.data.find(dirpath)
corpusReader = nltk.corpus.PlaintextCorpusReader(folder, '.*\.txt')

print "The number of sentences =", len(corpusReader.sents())
print "The number of patagraphs =", len(corpusReader.paras())
print "The number of words =", len([word for sentence in corpusReader.sents() for word in sentence])
print "The number of characters =", len([char for sentence in corpusReader.sents() for word in sentence for char in word])

Hi vọng điêu nay co ich

hd1

33.3K5 Huy hiệu vàng79 Huy hiệu bạc88 Huy hiệu đồng5 gold badges79 silver badges88 bronze badges

Đã trả lời ngày 22 tháng 2 năm 2011 lúc 6:38Feb 22, 2011 at 6:38

inspectorG4dgetinspectorG4dgetinspectorG4dget

107K25 Huy hiệu vàng140 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges140 silver badges236 bronze badges

Với NLTK, bạn cũng có thể sử dụng Freqdist (xem Sách O'Reillys Ch3.1)

Và trong trường hợp của bạn:

import nltk
raw = open('samp.txt').read()
raw = nltk.Text(nltk.word_tokenize(raw.decode('utf-8')))
fdist = nltk.FreqDist(raw)
print fdist.N()

Đã trả lời ngày 20 tháng 12 năm 2014 lúc 14:43Dec 20, 2014 at 14:43

TheidealistheidealisTheIdealis

6475 Huy hiệu bạc13 Huy hiệu Đồng5 silver badges13 bronze badges

Đối với những gì nó có giá trị nếu ai đó đi cùng ở đây. Điều này giải quyết tất cả những gì câu hỏi của OP đã hỏi tôi nghĩ. Nếu một người sử dụng gói textstat, việc đếm các câu và ký tự là rất dễ dàng. Có một tầm quan trọng nhất định cho dấu câu ở cuối mỗi câu.

import textstat

your_text = "This is a sentence! This is sentence two. And this is the final sentence?"
print("Num sentences:", textstat.sentence_count(your_text))
print("Num chars:", textstat.char_count(your_text, ignore_spaces=True))
print("Num words:", len(your_text.split()))

Đã trả lời ngày 21 tháng 8 năm 2017 lúc 20:14Aug 21, 2017 at 20:14

Salvusalvusalvu

5015 Huy hiệu bạc14 Huy hiệu đồng5 silver badges14 bronze badges

Tôi tin rằng đây là giải pháp phù hợp bởi vì nó đếm đúng những thứ như "..." và "??" Như một câu duy nhất

len(re.findall(r"[^?!.][?!.]", paragraph))

Đã trả lời ngày 9 tháng 3 năm 2021 lúc 20:27Mar 9, 2021 at 20:27

Hướng dẫn count number of sentences python nltk - đếm số câu python nltk

  • Nhân vật dễ tính.
  • Đoạn văn thường dễ dàng để đếm quá. Bất cứ khi nào bạn nhìn thấy hai dòng mới liên tiếp, bạn có thể có một đoạn văn. Bạn có thể nói rằng một bảng liệt kê hoặc một danh sách không có thứ tự là một đoạn văn, mặc dù các mục nhập của họ có thể được phân định bởi hai dòng mới. Một tiêu đề hoặc một tiêu đề cũng có thể được theo sau bởi hai dòng mới, thậm chí-mặc dù chúng rõ ràng không phải là các đoạn văn. Cũng xem xét trường hợp của một đoạn trong một tệp, với một hoặc không có dòng mới nào sau.
  • Câu rất khó. Bạn có thể giải quyết trong một khoảng thời gian, dấu chấm than hoặc điểm câu hỏi, sau đó là khoảng trắng hoặc cuối tệp. Thật khó khăn vì đôi khi Đại tá đánh dấu một bản án và đôi khi nó không. Thông thường khi nó thực hiện nhân vật không trắng tiếp theo sẽ là vốn, trong trường hợp tiếng Anh. Nhưng đôi khi không; Ví dụ: nếu đó là một chữ số. Và đôi khi một dấu ngoặc đơn mở kết thúc câu (nhưng điều đó có thể tranh cãi, như trong trường hợp này).
  • Từ ngữ cũng khó khăn. Thông thường các từ được phân định bởi khoảng trắng hoặc dấu chấm câu. Đôi khi một dấu gạch ngang phân định một từ, đôi khi không. Đó là trường hợp với một dấu gạch nối, ví dụ.

Đối với các từ và câu, có lẽ bạn sẽ cần nêu rõ định nghĩa của bạn về một câu và một từ và chương trình cho điều đó.

Đã trả lời ngày 22 tháng 2 năm 2011 lúc 6:06Feb 22, 2011 at 6:06

WILHELMTELLWILHELMTELLwilhelmtell

56.2K20 Huy hiệu vàng94 Huy hiệu bạc129 Huy hiệu đồng20 gold badges94 silver badges129 bronze badges

Không đúng 100% nhưng tôi chỉ thử. Tôi đã không lấy tất cả các điểm bởi @WilhelMtell để xem xét. Tôi thử chúng khi tôi có thời gian ...

if __name__ == "__main__":
   f = open("1.txt")
   c=w=0
   s=1
   prevIsSentence = False
   for x in f:
      x = x.strip()
      if x != "":
        words = x.split()
        w = w+len(words)
        c = c + sum([len(word) for word in words])
        prevIsSentence = True
      else:
        if prevIsSentence:
           s = s+1
        prevIsSentence = False

   if not prevIsSentence:
      s = s-1
   print "%d:%d:%d" % (c,w,s)

Ở đây 1.TXT là tên tệp.

Đã trả lời ngày 22 tháng 2 năm 2011 lúc 6:24Feb 22, 2011 at 6:24

SirishsirishSirish

8,90722 Huy hiệu vàng70 Huy hiệu bạc102 Huy hiệu Đồng22 gold badges70 silver badges102 bronze badges

Cách duy nhất bạn có thể giải quyết điều này là bằng cách tạo một chương trình AI sử dụng xử lý ngôn ngữ tự nhiên không dễ thực hiện.Natural Language Processing which is not very easy to do.

Input:

"Đây là một đoạn về máy Turing. Tiến sĩ Allan Turing đã phát minh ra máy Turing. Nó đã giải quyết một vấn đề có thay đổi 0,1% khi được giải quyết."

Thanh toán OpenNLPOpenNLP

https://sourceforge.net/projects/opennlp/

http://opennlp.apache.org/

Đã trả lời ngày 3 tháng 6 năm 2019 lúc 7:58Jun 3, 2019 at 7:58

Hướng dẫn count number of sentences python nltk - đếm số câu python nltk

Đã có một chương trình để đếm các từ và ký tự-- wc.

Đã trả lời ngày 22 tháng 2 năm 2011 lúc 6:01Feb 22, 2011 at 6:01

Max E.Max E.Max E.

1.73711 huy hiệu bạc15 huy hiệu đồng11 silver badges15 bronze badges