Sto cercando una parola o una funzione di conteggio delle parole. Quando copio e incollo qualcosa da internet e lo confronta con il mio algoritmo di conteggio parole personalizzato e MS Word, è sempre disattivato di poco più del 10%. Penso che sia troppo. Quindi voi ragazzi sapete di un algoritmo preciso di conteggio delle parole in C#.Algoritmo conteggio parole in C#
risposta
String.Split tramite caratteri predefiniti. Usa segni di punteggiatura, spazi (rimuovi più spazi) e qualsiasi altro carattere che tu determini essere "word splits"
Che cosa hai provato?
Ho visto che il precedente utente è stato inchiodato per i collegamenti, ma qui ci sono alcuni esempi di utilizzo di espressioni regolari o di corrispondenza dei caratteri. Speranza che aiuta, e nessuno si fa male X)
non per i collegamenti, piuttosto, per cercare su Google i link ovvi con nessun valore aggiunto in – zvolkov
ok, punto preso. –
@astander Non dimenticare l'opzione _StringSplitOptions.RemoveEmptyEntries_ in -_Split_ altrimenti, "word1, word2" o "word1? Word2" verranno conteggiati come 3 parole! –
Come @astander suggerisce, si può fare uno String.Split come segue:
string[] a = s.Split(
new char[] { ' ', ',', ';', '.', '!', '"', '(', ')', '?' },
StringSplitOptions.RemoveEmptyEntries);
Passando in una serie di caratteri, è possibile dividere in più interruzioni di parole. Rimozione di voci vuote ti impedirà di contare le parole non parole.
Questo è ottimo, ma dovresti anche tener conto delle nuove righe. Se si digita una parola, premere invio, digitare una parola, premere invio, restituirà un conteggio di 0. Uno degli overload per Split() consente una matrice di stringhe, quindi è possibile modificare questa matrice in stringhe di caratteri e aggiungi Environment.Newline (o "\ r \ n" e \ n "). –
A meno che il tuo input non contenga una formattazione molto limitata, probabilmente avrai bisogno di una rete più ampia - considera bretelle ricurve e angolate, trattini (anche se questo può produrre falsi positivi) e altri segni di punteggiatura. –
È inoltre necessario verificare newlines
, tabs
e non-breaking spaces
. Trovo che sia meglio copiare il testo di origine in uno e sostituire tutte le nuove righe, tabulazioni e caratteri di fine frase con spazi. Quindi dividi la stringa in base agli spazi.
Ho appena avuto lo stesso problema in ClipFlair, in cui avevo bisogno di calcolare WPM (parole al minuto) per le didascalie film, quindi mi si avvicinò con la seguente:
È possibile definire questo statica metodo di estensione in una classe statica e quindi aggiungere una clausola using allo spazio dei nomi di quella classe statica in qualsiasi classe che deve utilizzare questo metodo di estensione. Il metodo di estensione viene richiamato mediante s.WordCount(), dove s è una stringa (un identificatore [variabile/costante] o letterale)
public static int WordCount(this string s)
{
int last = s.Length-1;
int count = 0;
for (int i = 0; i <= last; i++)
{
if (char.IsLetterOrDigit(s[i]) &&
((i==last) || char.IsWhiteSpace(s[i+1]) || char.IsPunctuation(s[i+1])))
count++;
}
return count;
}
Usa un'espressione regolare per trovare le parole (ad esempio [\ w] +) e basta contare le partite
public static Regex regex = new Regex(
"[\\w]+",
RegexOptions.Multiline
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);
regex.Match (_someString) Count
Ecco la versione ridotta di classe C# codice che ho fatto per le parole che contano, parole asiatico, charaters ecc Questo è quasi lo stesso come Microsoft Word. Ho sviluppato il codice originale per contare le parole per i documenti di Microsoft Word.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace BL {
public class WordCount
{
public int NonAsianWordCount { get; set; }
public int AsianWordCount { get; set; }
public int TextLineCount { get; set; }
public int TotalWordCount { get; set; }
public int CharacterCount { get; set; }
public int CharacterCountWithSpaces { get; set; }
//public string Text { get; set; }
public WordCount(){}
~WordCount() {}
public void GetCountWords(string s)
{
#region Regular Expression Collection
string asianExpression = @"[\u3001-\uFFFF]";
string englishExpression = @"[\S]+";
string LineCountExpression = @"[\r]+";
#endregion
#region Asian Character
MatchCollection asiancollection = Regex.Matches(s, asianExpression);
AsianWordCount = asiancollection.Count; //Asian Character Count
s = Regex.Replace(s, asianExpression, " ");
#endregion
#region English Characters Count
MatchCollection collection = Regex.Matches(s, englishExpression);
NonAsianWordCount = collection.Count;
#endregion
#region Text Lines Count
MatchCollection Lines = Regex.Matches(s, LineCountExpression);
TextLineCount = Lines.Count;
#endregion
#region Total Character Count
CharacterCount = AsianWordCount;
CharacterCountWithSpaces = CharacterCount;
foreach (Match word in collection)
{
CharacterCount += word.Value.Length ;
CharacterCountWithSpaces += word.Value.Length + 1;
}
#endregion
#region Total Character Count
TotalWordCount = AsianWordCount + NonAsianWordCount;
#endregion
}
}
}
- 1. Numero di parole di conteggio in C#
- 2. Conteggio parole in Rails?
- 3. Conteggio parole semplice in haskell
- 4. Algoritmo di parole semplici
- 5. Algoritmo di ricerca di parole
- 6. Conteggio parole e caratteri utilizzando jQuery
- 7. mappa ridurre l'esempio di conteggio delle parole
- 8. Algoritmo di scramble delle parole efficiente
- 9. conteggio delle parole specifiche in linea in bash
- 10. jQuery: il conteggio delle parole in tempo reale
- 11. Conteggio delle parole in una raccolta utilizzando LINQ
- 12. parole Conteggio e caratteri in Bash senza wc
- 13. Conteggio occorrenze di determinate parole in dataframe panda
- 14. Metti risultato risultato conteggio parole in una variabile
- 15. come ordinare il conteggio delle parole per valore in hadoop?
- 16. conteggio parole di ogni riga in uno script
- 17. Conteggio di parole inglesi in una stringa casuale
- 18. Algoritmo per confrontare parole (non in ordine alfabetico)
- 19. Algoritmo per trovare le parole correlate in un testo
- 20. Algoritmo desiderato: trova tutte le parole di un dizionario simili alle parole in un testo libero
- 21. Algoritmo LP Simplex in C++
- 22. Algoritmo Triple DES in C?
- 23. Algoritmo di Sudoku in C#
- 24. Codice Golf 4 Luglio Edizione: Conteggio Top Ten avvenuti Parole
- 25. Conteggio celle biologiche C++ con OpenCV
- 26. C# Linq Parole chiave?
- 27. Algoritmo Rijndal usando C#
- 28. Algoritmo "seleziona" C++
- 29. TinyMCE, mostra il conteggio dei caratteri anziché il conteggio delle parole
- 30. Uso di parole chiave virtuali in C++
Il tuo algoritmo è costantemente troppo alto o troppo basso? O varia? – Larsenal
Stai contando solo parole, o è anche ciò che stai incollando. – joshperry
Perché stai usando il conteggio delle parole di MS Word come benchmark per la precisione? Sottili differenze in ciò che conta come una "parola" possono determinare differenze significative nel conteggio delle parole. Il 10% non è una sorpresa lì. Quello che stai vedendo è probabilmente perfettamente preciso, ma solo leggermente diverso. –