ما هي أفضل طريقة لتحديد إجمالي عدد كلمات الملف في Java؟

StackOverflow https://stackoverflow.com/questions/277143

  •  07-07-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة للعثور على إجمالي عدد الكلمات في ملف نصي في Java؟أعتقد أن Perl هو الأفضل في العثور على أشياء مثل هذه.إذا كان هذا صحيحًا، فسيكون استدعاء وظيفة Perl من داخل Java هو الأفضل؟ماذا كنت ستفعل في مثل هذه الحالة؟أي أفكار أفضل؟

هل كانت مفيدة؟

المحلول

ومبروك لديك تعثر على واحدة من أكبر المشاكل اللغوية! ما هي الكلمة؟ ويقال أن الكلمة هي الكلمة الوحيدة التي يعني في الواقع ما هو عليه. هناك كامل مجال اللغويات المكرسة لكلمات / وحدات من معنى - مورفولوجيا

وأفترض أن سؤالك تتعلق عد الكلمات في اللغة الإنجليزية. ومع ذلك، وخلق محايدة باللغة كلمة عداد / محلل هو أقرب إلى المستحيل بسبب الاختلافات اللغوية. على سبيل المثال، يمكن للمرء أن أعتقد أن مجرد معالجة مجموعة من الأحرف مفصولة المساحة البيضاء غير كافية. ومع ذلك، إذا نظرتم الى المثال التالي باللغة اليابانية، وسترون ان لا يعمل هذا النهج:

وこ れ は 日本語 の 例文 で す.

وهذا المثال يحتوي على 3 كلمات واضحة ويتم فصل أي منهم بمسافات. عادة، يتم تحليل حدود الكلمة اليابانية باستخدام نهج قائم على القاموس، وهناك عدد من المكتبات التجارية المتاحة لهذا الغرض. نحن محظوظين لديك مسافات في اللغة الإنجليزية! وأعتقد أن اللغات الهندية والصينية والكورية لديها أيضا مشاكل مماثلة.

إذا هذا الحل سوف يتم نشرها في الواقع في أي الطرق التي مدخلات متعددة اللغات هو ممكن، وسيكون من المهم أن تكون قادرة على سد العجز في مختلف وسائل كلمة الفرز حسب اللغة التي يتم تحليلها.

وأعتقد أن الإجابة الأولى إجابة جيدة لأنه يستخدم المعرفة جاوة القيم بيضاء يونيكود كمحددات. ومن tokenizes عن طريق مطابقة باستخدام التعابير المنطقية التالية: \p{javaWhitespace}+

نصائح أخرى

int count = 0;
Scanner sc = new Scanner(new File("my-text-file.txt")); 
while (sc.hasNext()) {
   ++count;
   sc.next();
}

على الرغم من أن Perl يمكنه القيام بذلك، إلا أنني أعتبر أنه من المبالغة ربطه/استدعائه لهذا النوع من المهام (ما لم تكن قد قمت بالفعل باختبار ذلك).

  • اقتراحي هو البحث عن التعليمات البرمجية التي تفعل ما تحتاجه على الويب والتعلم منه، على سبيل المثال.هنا: http://schmidt.devlib.org/java/word-count.html

إذا كنت على يونيكس، وwc -w filename تفعل خدعة.

وجعل بعض الافتراضات حول ما يعرف "كلمة"، حل واحد سيكون لفتح الملف باستخدام قارئ تيار النص ومسحها ضوئيا، عد عدد الأحرف مسافة بيضاء غير متجاورة، زائد واحد في نهاية، على سبيل المثال

 this is some sample text
 this is some more sample text

والنص أعلاه سيكون 11 كلمات في ذلك، عد إلى 9 المساحات و1 سطر جديد و 1 نهاية الملف

وكنت تهيئة الباحث word_count إلى 1، ثم حلقة من خلال كل حرف في الملف وزيادة word_count لكل حرف مسافة بيضاء <م> إلا كان الحرف السابق حرف مسافة بيضاء. (A مساحة أو علامة التبويب أو سطر جديد).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top