ওয়ার্ড ডকুমেন্ট থেকে অনন্য শব্দগুলি তালিকাবদ্ধ এবং গণনা করুন [বন্ধ]


0

আমি একটি মাইক্রোসফ্ট ওয়ার্ড ডকুমেন্ট নিতে চাই এবং নথিতে থাকা সমস্ত শব্দের স্প্রেডশিট এবং প্রতিটি শব্দ কতবার প্রদর্শিত হবে তার সংখ্যা তৈরি করতে চাই।

যেমন,

cat    23
said   15
jumped 12
dog    7

ওয়ার্ড বা এক্সেলের বিল্ট-ইন ফাংশন এবং বৈশিষ্ট্যগুলি ব্যবহার করে এটি কি কোনও সহজ-সরল পদ্ধতিতে সম্পন্ন করা যেতে পারে এমন কোনও মস্তিষ্কের সমস্যা?

যদি তা না হয় তবে এই কার্যকারিতাটি অফ-দ্য শেল্ফ সরঞ্জামগুলিতে সহজেই উপলব্ধ (কোন ক্ষেত্রে, দয়া করে আমাকে সফ্টওয়্যার রেকস সাইটে কী জিজ্ঞাসা করা উচিত পরামর্শ দিন), অথবা কাস্টম প্রোগ্রামিংয়ের প্রয়োজন হবে?


এক্সেল সমাধান: পদক্ষেপ 1: একটি স্প্রেডশিট কলামে নথিকে পৃথক শব্দের মধ্যে পার্স করুন। পদক্ষেপ 2: সমাধানের বাকী অংশটি এই উত্তরে রয়েছে: superuser.com/a/518655/364367 (এর সংযুক্ত উদাহরণ দেখুন)।
ফিক্সার 1234

উত্তর:


3

ভিবিএ ছাড়াও ওয়ার্ড ডকুমেন্টের বিষয়বস্তু পড়তে ওপেনঅফিসের এপিআই ব্যবহার করে কেউ এ জাতীয় অ্যাপ্লিকেশন বিকাশ করতে পারে; এটি প্রক্রিয়া করুন এবং একটি স্প্রেডশিট অ্যাপ্লিকেশন খোলার জন্য ফলাফল CSV ফাইল হিসাবে রফতানি করুন।

তবে আপনি যদি কোনও প্রোগ্রামিং ভাষার সাথে পরিচিত হন তবে এটি আসলে কোডের কয়েকটি লাইন। উদাহরণস্বরূপ পাইথনে আপনি সহজে এটি এর মতো করতে পারেন:

এখানে আমরা একটি সাধারণ ক্রিয়াকলাপ সংজ্ঞায়িত করি যা শব্দগুলির একটি তালিকা দেওয়া হয়

def countWords(a_list):
    words = {}
    for i in range(len(a_list)):
        item = a_list[i]
        count = a_list.count(item)
        words[item] = count
    return sorted(words.items(), key = lambda item: item[1], reverse=True)

বাকীটি হ'ল ডকুমেন্টের সামগ্রীটি হস্তান্তর করা। প্রথমটি এটি আটকে দিন:

content = """This is the content of the word document. Just copy paste it. 
It can be very very very very long and it can contain punctuation 
(they will be ignored) and numbers like 123 and 4567 (they will be counted)."""

এখানে আমরা বিরামচিহ্ন, ইওএল, প্রথম বন্ধনী ইত্যাদি মুছে ফেলি এবং তারপরে আমাদের ফাংশনের জন্য একটি শব্দ তালিকা তৈরি করি:

import re

cleanContent = re.sub('[^a-zA-Z0-9]',' ', content)

wordList = cleanContent.lower().split()

তারপরে আমরা আমাদের ফাংশনটি পরিচালনা করি এবং এর ফলাফল (শব্দ-গণনা জোড়া) অন্য তালিকায় সংরক্ষণ করি এবং ফলাফলগুলি মুদ্রণ করি:

result = countWords(wordList)

for words in result:
    print(words)

সুতরাং ফলাফল:

('very', 4)
('and', 3)
('it', 3)
('be', 3)
('they', 2)
('will', 2)
('can', 2)
('the', 2)
('ignored', 1)
('just', 1)
('is', 1)
('numbers', 1)
('punctuation', 1)
('long', 1)
('content', 1)
('document', 1)
('123', 1)
('4567', 1)
('copy', 1)
('paste', 1)
('word', 1)
('like', 1)
('this', 1)
('of', 1)
('contain', 1)
('counted', 1)

আপনি চাইলে অনুসন্ধান / প্রতিস্থাপন ব্যবহার করে বন্ধনী এবং কমা অপসারণ করতে পারেন।

আপনাকে পাইথন 3 ডাউনলোড করতে, এটি ইনস্টল করতে, আইডিএল খুলুন (পাইথনের সাথে আসে) আপনার শব্দ নথির বিষয়বস্তু প্রতিস্থাপন করুন এবং একবারে এবং প্রদত্ত ক্রমে কমান্ডগুলি চালনা করুন।


2

ভিবিএ ব্যবহার করুন। আপনার অনুরোধটি ঠিক তেমন করতে ম্যাক্রো (সাবরুটাইন) এই পৃষ্ঠায় রয়েছে:

Sub WordFrequency()
    Const maxwords = 9000          'Maximum unique words allowed
    Dim SingleWord As String       'Raw word pulled from doc
    Dim Words(maxwords) As String  'Array to hold unique words
    Dim Freq(maxwords) As Integer  'Frequency counter for unique words
    Dim WordNum As Integer         'Number of unique words
    Dim ByFreq As Boolean          'Flag for sorting order
    Dim ttlwds As Long             'Total words in the document
    Dim Excludes As String         'Words to be excluded
    Dim Found As Boolean           'Temporary flag
    Dim j, k, l, Temp As Integer   'Temporary variables
    Dim ans As String              'How user wants to sort results
    Dim tword As String            '

    ' Set up excluded words
    Excludes = "[the][a][of][is][to][for][by][be][and][are]"

    ' Find out how to sort
    ByFreq = True
    ans = InputBox("Sort by WORD or by FREQ?", "Sort order", "WORD")
    If ans = "" Then End
    If UCase(ans) = "WORD" Then
        ByFreq = False
    End If

    Selection.HomeKey Unit:=wdStory
    System.Cursor = wdCursorWait
    WordNum = 0
    ttlwds = ActiveDocument.Words.Count

    ' Control the repeat
    For Each aword In ActiveDocument.Words
        SingleWord = Trim(LCase(aword))
        'Out of range?
        If SingleWord < "a" Or SingleWord > "z" Then
            SingleWord = ""
        End If
        'On exclude list?
        If InStr(Excludes, "[" & SingleWord & "]") Then
            SingleWord = ""
        End If
        If Len(SingleWord) > 0 Then
            Found = False
            For j = 1 To WordNum
                If Words(j) = SingleWord Then
                    Freq(j) = Freq(j) + 1
                    Found = True
                    Exit For
                End If
            Next j
            If Not Found Then
                WordNum = WordNum + 1
                Words(WordNum) = SingleWord
                Freq(WordNum) = 1
            End If
            If WordNum > maxwords - 1 Then
                j = MsgBox("Too many words.", vbOKOnly)
                Exit For
            End If
        End If
        ttlwds = ttlwds - 1
        StatusBar = "Remaining: " & ttlwds & ", Unique: " & WordNum
    Next aword

    ' Now sort it into word order
    For j = 1 To WordNum - 1
        k = j
        For l = j + 1 To WordNum
            If (Not ByFreq And Words(l) < Words(k)) _
              Or (ByFreq And Freq(l) > Freq(k)) Then k = l
        Next l
        If k <> j Then
            tword = Words(j)
            Words(j) = Words(k)
            Words(k) = tword
            Temp = Freq(j)
            Freq(j) = Freq(k)
            Freq(k) = Temp
        End If
        StatusBar = "Sorting: " & WordNum - j
    Next j

    ' Now write out the results
    tmpName = ActiveDocument.AttachedTemplate.FullName
    Documents.Add Template:=tmpName, NewTemplate:=False
    Selection.ParagraphFormat.TabStops.ClearAll
    With Selection
        For j = 1 To WordNum
            .TypeText Text:=Trim(Str(Freq(j))) _
              & vbTab & Words(j) & vbCrLf
        Next j
    End With
    System.Cursor = wdCursorNormal
    j = MsgBox("There were " & Trim(Str(WordNum)) & _
      " different words ", vbOKOnly, "Finished")
End Sub

দ্রষ্টব্য: (১) ডিজাইনের মাধ্যমে (তবে নথিভুক্ত নয়) এই রুটিনটি "" "," ক "," অফ "," টি "," টু "," ফর "," বাই "শব্দটিকে উপেক্ষা করবে (বাদ দেবে), "হতে", "এবং", এবং "হয়"। এই তালিকাটি পরিবর্তন করতে আপনি তুচ্ছভাবে কোড সম্পাদনা করতে পারেন। (২) একটি ত্রুটি রয়েছে বলে মনে হচ্ছে: একটি "শব্দ" রেঞ্জের বাইরে থাকলে তা প্রত্যাখ্যান করা হবে If SingleWord < "a" Or SingleWord > "z"। এর ফলে শব্দগুলিতে "z" উপেক্ষা করা শুরু হবে। একজন খুব দ্রুত পরীক্ষা (আমি এটি একটি "টেস্ট" কল করে এটা সম্মানিত যাচ্ছি না) হেতু এই পরিবর্তন করে সংশোধন করা যেতে পারে যে > "z"করতে >= "{"
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.