Diverse taalkundige en Unicode-overwegingen

In dit onderwerp worden stemmingsoverwegingen beschreven voor agglutinatieve talen en Unicode-surrogaatparen en voor het gebruik van surrogaatparen om de Unicode-tekenset uit te breiden voor verschillende tekensets. In dit onderwerp wordt ook beschreven hoe woordonderbrekers zinnen in tekst identificeren en vaste spaties verwerken en hoe woordonderbrekers en stemmers getallen en datums verwerken, samengestelde woorden, samengestelde woordgroepen, speciale woorden en tekens, acroniemen en afkortingen en hoofdlettergebruik.

Dit onderwerp is als volgt ingedeeld:

Woordgroepidentificatie

Woordgroepen zijn een woord of een groep woorden die door een of meer anderen worden gewijzigd. Zinnen zijn moeilijk consistent te identificeren, omdat dezelfde modifier kan worden gebruikt in meer dan één woordgroep met hetzelfde zelfstandig naamwoord. Bijvoorbeeld 'nieuw huis', 'Huis van Parlement', 'nieuw Parlement'.

In Windows Search worden woordgroepen het vaakst gebruikt tijdens het uitvoeren van query's. Woordgroepen in querytekst krijgen meer gewicht dan afzonderlijke woorden. Uit het vorige voorbeeld is een document met "Huis van Parlement" hoger dan één met "Huis" en "Parlement" op verschillende punten in het document. Het is raadzaam dat woordonderbrekers tijdens het uitvoeren van een query een woordgroep genereren als de woordgroep waarschijnlijk overeenkomt met ten minste één document.

Agglutinatieve talen

Agglutinatieve talen vormen woorden door de combinatie van kleinere morfinemen om samengestelde ideeën uit te drukken. Elk van deze morfinemen heeft over het algemeen één betekenis of functie en behoudt de oorspronkelijke vorm en betekenis tijdens het combinatieproces. Voor talen met agglutinatieve morfologie, zoals Turks, Fins, Hongaars of Koreaans, is het mogelijk om duizenden vormen te produceren voor een bepaald hoofdwoord.

In de volgende tabel ziet u een lijst met inflecteerde formulieren voor het Finse woord 'talo' ('huis').

Woord Vertaling
Talo Huis
Taloni Mijn huis
Talossa In het huis
Talossani In mijn huis
Taloja Huizen
Taloissa In de huizen

 

Inflecteerde talen, zoals Engels, Frans en Latijns, hebben een zeer klein aantal mogelijke woordvormen voor één hoofdwoord. In geïnflecteerde talen beïnvloeden morfinemen elkaar wanneer ze worden gebonden. De meeste wijzigingen in de afbuiging zijn aanwezig in de stam of het woord dat eindigt. In tegenstelling tot agglutinatieve talen hebben geïnflecteerde talen meestal verschillende functies voor één morpheme. Een morpheme kan bijvoorbeeld zowel getal als hoofdletters bepalen.

Stemmers voor agglutinatieve talen moeten de afweging tussen prestaties en nauwkeurigheid wegen om slechts een subset van het aantal mogelijke woordvormen te genereren.

Getallen, tijden en datums

Woordonderbrekers moeten een gemeenschappelijke indeling gebruiken voor het weergeven van getallen, tijden en datums om consistente query's mogelijk te maken.

Wanneer u een woordonderbreker maakt, raden we aan dat de woordonderbreker getallen normaliseert in een canonieke weergave met behulp van het patroon NNddDcc", waarbij NN de letterlijke reeks "NN" is, dd het gehele getal is, D de letterlijke 'D' is en cc het breukgedeelte van het getal is. Woordonderbrekers beperken niet het aantal cijfers voor het gehele getal of het breukgedeelte van het getal. Het is raadzaam dat woordonderbrekers numerieke patronen herkennen die worden gescheiden door beide punten (.) en komma's (,). Windows Search vertegenwoordigt bijvoorbeeld zowel '1.000.2' als '1.000,2' als 'NN1000D2'.

Kies één notatie voor woordonderbreker en stemmer. Arabische cijfers met één byte worden genormaliseerd, zodat een query met een van deze formulieren overeenkomt met documenten met de andere formulieren.

Wanneer u een woordonderbreker maakt, wordt u aangeraden dat de woordonderbreker altijd als een 24-uursweergave wordt weergegeven met behulp van het patroon 'TTuumms', waarbij TT het letterlijke voorvoegsel 'TT' is, uu de uren is, mm de minuten is en ss de seconden is. Windows Search komt niet overeen met extra tijdseenheden, zoals milliseconden. Het parseren van A.M. en P.M. patronen is optioneel.

Wanneer u een woordonderbreker maakt, wordt u aangeraden dat de woordonderbreker datums genereert in de canonieke notatie 'DDjjjjmmdd', waarbij DD de letterlijke 'DD' is, jjjj de jaren is, mm de maanden is en dd de dagen is. We raden ook aan dat woordonderbrekers tweecijferige jaren opslaan in indelingen van de twintigste eeuw en twintigste eeuw. Woordonderbrekers vertegenwoordigen bijvoorbeeld '2.2.99' als 'DD19990202' en 'DD20990202'. Tijdens het uitvoeren van query's leidt Windows Search de datum af met behulp van API's (Windows Application Programming Interfaces) om de kruisoverdatum voor de server te bepalen om de juiste indeling weer te geven, 19XX of 20XX.

Samengestelde woorden

In sommige talen, zoals Duits, worden zelfstandige naamwoorden samengesteld uit eenvoudigere zelfstandige naamwoorden. Deze samengestelde zelfstandige naamwoorden zijn te specifiek in de betekenis voor redelijke terugroepen van query's. Zonder ontleding komt een query voor "Versicherung" ("verzekering") bijvoorbeeld niet overeen met "Lebensversicherungs query" (verkoper van levensverzekeringen). In dergelijke gevallen raden we aan dat woordonderbrekers deze samengestelde woorden opsplitsen in basisonderdelen tijdens het maken van de index en de querytijd. De Duitse woordonderbreker breekt "Lebensversicherungs binnenkomen" in de component woorden "Leben," "Versicherung" en "Binnenkomend." Er wordt dezelfde ontleding toegepast op het moment van de query, samen met optionele stemming voor elk van de resulterende termen.

Samengestelde woordgroepen

Sommige talen, zoals Koreaans, bevatten complexe woordgroepen die op verschillende manieren kunnen worden verbroken. Een Koreaanse woordgroep bestaat uit inhoudswoorden, zoals zelfstandige naamwoorden, voornaamwoorden, werkwoorden en bijvoeglijke naamwoorden, gevolgd door functionele woorden. Functionele woorden worden gevonden in postposities en einden. Postposities geven de functionele rol van het zelfstandig naamwoord of het voornaamwoord in een zin aan; einden geven de functionele rol van het werkwoord of bijvoeglijk naamwoord aan.

Eén woordgroep kan de verschillende analyses bevatten en elke analyse kan bestaan uit verschillende inhoudswoorden. De woordonderbreker moet taalspecifieke heuristiek gebruiken om te bepalen hoeveel gewicht moet worden geboden aan verschillende analyses. De woordonderbreker kan bepalen welke decompositie moet worden gebruikt op basis van het aantal resulterende onderdeelwoorden. Sommige woordonderbrekers geven misschien een voorkeur aan korte reeksen langere termen, terwijl andere woordonderbrekers een voorkeur kunnen geven voor lange reeksen kleinere woorden.

Een andere overweging is dat in het Koreaans, zelfstandige naamwoorden en naamwoorden het opslaan in de index zonder de bijbehorende functionele woorden kan zijn. Koreaans is een agglutinatieve taal en combineert talloze woordeinden met werkwoorden en bijvoeglijke naamwoorden om talloze inflecteerde vormen te vormen. Werkwoorden en bijvoeglijke naamwoorden die in woordgroepen worden geïdentificeerd, worden opgeslagen met hun einden in de index, maar de woordonderbreker genereert geen nieuwe formulieren.

Speciale tekens en woorden

Speciale tekens zijn tekens zoals ',' '©, '' en '™'. Deze tekens worden zelden gebruikt in query's. Woordonderbrekers moeten speciale tekens verwijderen tijdens het maken van de index en tijdens het uitvoeren van query's.

Het is raadzaam dat woordonderbrekers speciale woorden herkennen, zoals 'C++', 'C#', '.NET', cijfers en muzikale notatie. Woordonderbrekers kunnen een taal-heuristiek gebruiken om een patroon voor speciale woorden te identificeren. Woordonderbrekers kunnen ook een aangepaste woordenlijst gebruiken die herkende speciale woorden bevat.

Acroniemen en afkortingen

Acroniemen en afkortingen moeten worden overwogen wanneer u een woordonderbreker implementeert. In veel talen worden afzonderlijke letters van acroniemen gescheiden door punten. Soms worden woorden die niet worden herkend acroniemen of afkortingen afgekort. 'Verenigde Staten van Amerika' kan bijvoorbeeld worden afgekort als 'VS' of 'VS'. Woordonderbrekers in Windows Search identificeren woorden met één letter meestal als ruiswoorden en behandelen deze woorden als tijdelijke aanduidingen tijdens de querytijd. Tijdens querytijd converteert een woordonderbreker die niet op de hoogte is van veelvoorkomende acroniemen of die geen afkortingen herkent, de afkorting 'U.S.A'. converteert naar 'U', 'S' en 'A'. Deze ontleding biedt onvoldoende informatie om woorden in de index voor volledige tekst te vinden, omdat alle querytermen ruiswoorden zijn. Wanneer u een woordonderbreker maakt, wordt u aangeraden dat de woordonderbreker de punten verwijdert die de letters van acroniemen scheiden. In het voorbeeld wordt 'V.S.A', opgeslagen als 'VS' en een queryterm die 'U.S.A', daadwerkelijk query's voor 'VS' bevat. Als een woordonderbreker een afkorting verwerkt, wordt de punt in die afkorting niet behandeld als een EOS-onderbreking. Hierdoor kan een woordonderbreker een EOS-einde mogelijk niet correct identificeren als de afkorting zich aan het einde van de zin bevindt.

Kapitalisatie

Windows Search behoudt momenteel geen hoofdlettergebruik wanneer woorden worden opgeslagen in de index voor volledige tekst. Woordonderbrekers en stemmers mogen het hoofdlettergebruik voor woorden niet wijzigen.

Vaste spaties

Wanneer u een woordafbreking maakt, wordt u aangeraden ervoor te zorgen dat de woordonderbreker vaste spaties behandelt als scheidingstekens voor woorden. Het wordt ook aanbevolen dat de woordonderbreker alternatieve vormen van het woord genereert, met en zonder vaste spaties. Sommige tekens, zoals onderstrepingstekens, zijn speciale tekens die worden behandeld als vaste tekens vanwege de bronnen van de tekst waarin ze worden gevonden. Broncode- of bestandsnamen kunnen bijvoorbeeld onderstrepingstekens bevatten als vaste tekens.

Surrogaatparen

Surrogaatparen zijn tekenweergaven in broncode die één teken vertegenwoordigen dat bestaat uit een reeks van twee Unicode-waarden. In een gecodeerd paar is de eerste waarde een hoog surrogaat en de tweede is een laag surrogaat. Een hoog surrogaat is een teken in het bereik U+D800 tot en met U+DBFF. Een laag surrogaat is een teken in het bereik U+DC00 tot en met U+DFFF. Surrogaatparen breiden de tekenset uit buiten het Unicode-teken. We raden u aan om een woordonderbreker de volgende regels te gebruiken bij het verwerken van surrogaatparen:

  • Een hoog surrogaat moet voorafgaan aan een laag surrogaat.
  • Een laag surrogaat moet een hoog surrogaat volgen.
  • Een hoog of laag surrogaat zonder een overeenkomstige waarde voor de andere helft heeft geen betekenis.

Woordonderbrekers moeten rekening houden met paren en de paren als zodanig genereren in de index. Zie Surrogaten en Aanvullende tekensvoor meer informatie.