Frage

Ich habe eine Verpflichtung eine Zeichenfolge Vertrag wie ...

  

Würde du immer ein Roboter? Sie würden mit einem kostenlosen jährlichen Ölwechsel zur Verfügung gestellt werden. "

... zu etwas viel kürzer, aber noch immer noch menschlich identifizierbaren (es muß aus einer Auswahlliste zu finden ist - meine aktuelle Lösung hat Benutzer einen beliebigen Titel eingeben für den alleinigen Zweck der Auswahl)

Ich möchte nur den Teil der Zeichenfolge extrahieren, die eine Frage bildet (wenn möglich) und dann irgendwie zu reduzieren, um so etwas wie

  

WouldConsiderBecomingRobot

Gibt es grammatische Algorithmen gibt, die helfen könnte mich mit diesem? Ich denke, es könnte etwas sein, das nur herauszupicken erlaubt sein Verben und Substantive .

Da dies nur als Schlüssel zu handeln, ist es nicht perfekt sein muss; Ich suche nicht die inherant Komplexität der Sprache Englisch trivialisieren.

War es hilfreich?

Lösung 3

ich am Ende der folgende Erweiterung Verfahren zu schaffen, die Arbeit überraschend gut funktioniert. Dank Joe Schlag für seine hervorragenden und effektive Vorschläge:

    public static string Contract(this string e, int maxLength)
    {
        if(e == null) return e;

        int questionMarkIndex = e.IndexOf('?');
        if (questionMarkIndex == -1)
            questionMarkIndex = e.Length - 1;

        int lastPeriodIndex = e.LastIndexOf('.', questionMarkIndex, 0);

        string question = e.Substring(lastPeriodIndex != -1 ? lastPeriodIndex : 0, questionMarkIndex + 1).Trim();

        var punctuation =
            new [] {",", ".", "!", ";", ":", "/", "...", "...,", "-,", "(", ")", "{", "}", "[", "]","'","\""};

        question = punctuation.Aggregate(question, (current, t) => current.Replace(t, ""));

        IDictionary<string, bool> words = question.Split(' ').ToDictionary(x => x, x => false);

        string mash = string.Empty;
        while (words.Any(x => !x.Value) && mash.Length < maxLength)
        {
            int maxWordLength = words.Where(x => !x.Value).Max(x => x.Key.Length);
            var pair = words.Where(x => !x.Value).Last(x => x.Key.Length == maxWordLength);
            words.Remove(pair);
            words.Add(new KeyValuePair<string, bool>(pair.Key, true));
            mash = string.Join("", words.Where(x => x.Value)
                                       .Select(x => x.Key.Capitalize())
                                       .ToArray()
                );
        }

        return mash;
    }

Diese Verträge die folgenden 15 Zeichen:

  • Dies hat keine prereqs haben - schreiben einen Aufsatz ...: PrereqsWriteEssay
  • Sie haben ein Auto ausgewählt: YouveSelectedCar

Andere Tipps

Wahrscheinlich zu stark vereinfacht, aber ich könnte mit einer Liste starten von „Füllwörter“ versucht sein:

var fillers = new[]{"you","I","am","the","a","are"};

Dann ist alles vor einem Fragezeichen extrahieren (mit Regex, String Maischen, was auch immer Sie Lust), was Sie „Würdest du immer ein Roboter“.

Dann die Zeichenfolge durchlaufen jedes Wort ein Füllstoff in Betracht gezogen zu extrahieren.

var sentence = "Would you consider becoming a robot";
var newSentence = String.Join("",sentence.Split(" ").Where(w => !fillers.Contains(w)).ToArray());
// newSentence is "Wouldconsiderbecomingrobot".

Pascal jedes Wortes Gehäuse in der gewünschten Zeichenfolge führen würde -. I, dass für den Leser als Übung verlassen wird

Erstellen Sie eine beliebte Social-Media-Website. Wenn Benutzer mögen Kommentare verbinden oder zu veröffentlichen, prompt sie ein Captcha zu lösen. Das Captcha wird aus Ihren verkürzten Versionen der langen Strings, um ihre vollen Versionen entsprechen. Ihre Verkürzung Algorithmus auf einem neuronalen Netz oder genetischen Algorithmus basieren wird, die von den capcha Ergebnissen trainiert wird.

Sie können auch verkaufen Werbung auf der Website.

Ich glaube nicht, dass jeder Algorithmus ist, dass, wenn jedes Wort einer Zeichenfolge identifizieren kann, ist ein Substantiv, Adjektiv oder was auch immer. Die einzige Lösung wäre ein Benutzerwörterbuch zu verwenden. Nur eine Liste von Worten erstellen, die nicht als Verben oder Substantive identifiziert werden kann (. I, Sie, sie, sie, sein, ihrs, von, a, das etc.)

Dazu einfach alle die Worte vor dem Fragezeichen halten müssen, die nicht in der Liste enthalten sind.

Es ist nur ein Problem zu umgehen, und ich sagte ihr, es ist nicht perfekt.

Hope, das hilft!

Willkommen in der wunderbaren Welt der Verarbeitung natürlicher Sprache . Wenn Sie Substantive und Verben identifizieren möchten, benötigen Sie einen Wortart Tagger .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top