Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano zagadnienia wynikające z analizy języków agglutynatywnych i par zastępczych Unicode oraz używanie par zastępczych w celu rozszerzenia zestawu znaków Unicode w celu uwzględnienia różnych zestawów znaków. W tym temacie opisano również, w jaki sposób moduły dzielenia wyrazów identyfikują frazy w tekście i obsługują spacje niełamające się oraz jak moduły podziału wyrazów i stemmerów obsługują liczby i daty, wyrazy złożone, wyrażenia złożone, słowa specjalne i znaki, akronimy i skróty oraz wielkości liter.
Ten temat jest zorganizowany w następujący sposób:
- identyfikacji fraz
- języków agglutynatywnych
- liczby, godziny i daty
- wyrazów złożonych
- złożone frazy
- znaki specjalne i wyrazy
- akronimów i skrótów
- capitalization
- spacji bez złamania
- pary zastępcze
Identyfikacja fraz
Frazy są wyrazem lub grupą wyrazów, które są modyfikowane przez co najmniej jedną inną. Frazy są trudne do spójnej identyfikacji, ponieważ ten sam modyfikator może być używany w więcej niż jednej frazie z tym samym daniem. Na przykład "nowy dom", "Izba Parlamentu", "nowa Izba Parlamentu".
Usługa Windows Search używa fraz najczęściej w czasie wykonywania zapytań. Frazy w tekście zapytania otrzymują wyższą wagę niż poszczególne wyrazy. Z poprzedniego przykładu dokument zawierający "Izbę Parlamentu" jest w rankingu wyższym niż dokument zawierający "Izbę" i "Parlament" w różnych punktach dokumentu. Zalecamy, aby moduły dzielenia wyrazów wygenerowały frazę w czasie zapytania, jeśli fraza może być zgodna z co najmniej jednym dokumentem.
Języki agglutynatywne
Języki agglutynatywne tworzą wyrazy przez kombinację mniejszych morfemów, aby wyrazić złożone pomysły. Każdy z tych morfemów zazwyczaj ma jedno znaczenie lub funkcję i zachowuje oryginalną formę i znaczenie podczas procesu kombinacji. W przypadku języków, które mają agglutynacyjną morfologię, taką jak turecki, fiński, węgierski lub koreański, można produkować tysiące form dla danego słowa głównego.
W poniższej tabeli przedstawiono listę wzrostowych formularzy dla fińskiego słowa "talo" ("house").
| Słowo | Tłumaczenie |
|---|---|
| Talo | Dom |
| Taloni | Mój dom |
| Talossa | W domu |
| Talossani | W moim domu |
| Taloja | Domy |
| Taloissa | W domach |
Odwłożone języki, takie jak angielski, francuski i łaciński, mają bardzo małą liczbę możliwych form wyrazów dla jednego słowa głównego. W językach inflected morfemes wpływają na siebie podczas wiązania. Większość zmian w przegięciach występuje w końcu stem lub word end. W przeciwieństwie do języków agglutynatywnych, odwrotne języki mają tendencję do różnych funkcji dla pojedynczego morfeme. Na przykład morfem może określać zarówno liczbę, jak i wielkość liter.
Stemmers dla języków agglutynatywnych musi ważyć kompromis między wydajnością i dokładnością, aby wygenerować tylko podzestaw liczby możliwych form słów.
Liczby, godziny i daty
Podziały wyrazów muszą używać wspólnego formatu do reprezentowania liczb, godzin i dat, aby ułatwić spójne wykonywanie zapytań.
Podczas tworzenia podziału wyrazów zaleca się, aby podział wyrazów znormalizował liczby do reprezentacji kanonicznej przy użyciu wzorca "NNdd ddDdw", gdzie NN jest sekwencją literału "NN", dd jest liczbą całkowitą liczby, D jest literałem "D", a cc jest częścią ułamkową liczby. Podziałki wyrazów nie ograniczają liczby cyfr dla liczby całkowitej lub części ułamkowej liczby. Zalecamy rozpoznawanie wzorców liczbowych rozdzielanych kropkami (.) i przecinkami (,). Na przykład usługa Windows Search reprezentuje wartości "1 000.2" i "1.000,2" jako "NN1000D2".
Wybierz jeden format dla zarówno podziału wyrazów, jak i stemmera. Liczby arabskie z jednym bajtem są znormalizowane, tak aby zapytanie zawierające dowolną z tych formularzy pasowało do dokumentów z innymi formularzami.
Podczas tworzenia podziału wyrazów zalecamy, aby podział wyrazów przedstawiał cały czas jako reprezentację 24-godzinną przy użyciu wzorca "TThhmmss", gdzie TT jest prefiksem literału "TT", hh to godziny, mm to minuty, a ss to sekundy. Usługa Windows Search nie jest zgodna z dodatkowymi jednostkami czasu, takimi jak milisekundy. Analizowanie wzorców A.M. i PM jest opcjonalne.
Podczas tworzenia podziału wyrazów zalecamy wygenerowanie dat w formacie kanonicznym ciągu "DDrrrrd", gdzie DD jest literałem "DD", rrrr to lata, mm to miesiące, a dd to dni. Zalecamy również, aby moduły dzielenia wyrazów przechowywały dwa cyfry lat w formatach xxi wieku i xxi wieku. Na przykład podziały wyrazów reprezentują "2.2.99" jako "DD19990202" i "DD20990202". W czasie wykonywania zapytania usługa Windows Search uzyskuje datę przy użyciu interfejsów programowania aplikacji (API) systemu Windows w celu określenia daty krzyżowego dla serwera w celu wyświetlenia poprawnego formatu, 19XX lub 20XX.
Wyrazy złożone
W niektórych językach, takich jak niemiecki, nouns są złożone z prostszych nicowników. Te rzeczowniki złożone są zbyt specyficzne w znaczeniu rozsądnego przypomnienia zapytań. Na przykład bez dekompozycji zapytanie "Versicherung" ("ubezpieczenie") nie pasuje do "Lebensversicherungsgesellschaft" ("sprzedawca ubezpieczeń na życie"). W takich przypadkach zalecamy podzielenie wyrazów przez moduły podziału tych wyrazów złożonych na podstawowe składniki zarówno podczas tworzenia indeksu, jak i czasu zapytania. Niemiecki wyłącznik wyrazów przerywa "Lebensversicherungsgesell ltd" w słowach składowych "Leben", "Versicherung" i "Gesellschaft". Stosuje tę samą dekompozycję w czasie zapytania wraz z opcjonalnym elementem wynikającym dla każdego z wynikowych terminów.
Frazy złożone
Niektóre języki, takie jak koreański, zawierają złożone frazy, które mogą być przerywane na wiele różnych sposobów. Wyrażenie koreańskie składa się z wyrazów zawartości, takich jak nouns, zaimki, czasowniki i przymiotniki, a następnie wyrazy funkcjonalne. Wyrazy funkcjonalne znajdują się w pozycjach po i zakończeniach. Pozycja po pozycjach wskazuje rolę funkcjonalną mianownika lub zaimka w zdaniu; zakończenia wskazują rolę funkcjonalną czasownika lub przymiotnika.
Jedna fraza może mieć kilka analiz, a każda analiza może składać się z kilku słów zawartości. Słowo breaker musi stosować heurystyki specyficzne dla języka, aby określić, z kontekstu, ile wagi należy dać do różnych analiz. Podział wyrazów może określić, która dekompozycja ma być używana na podstawie liczby wynikowych wyrazów składowych. Niektóre podziały wyrazów mogą faworyzować krótkie sekwencje dłuższych terminów, podczas gdy inne podziały wyrazów mogą faworyzować długie sekwencje mniejszych wyrazów.
Innym zagadnieniem jest to, że w języku koreańskim, nouns i zaimki mogą być przechowywane w indeksie bez odpowiadających im słów funkcjonalnych. Koreański to język agglutynatywne i łączy liczne zakończenia wyrazów z czasownikami i przymiotnikami w celu utworzenia niezliczonych form odchylanych. Czasowniki i przymiotniki zidentyfikowane w frazach są zapisywane z ich zakończeniami w indeksie, ale podział wyrazów nie generuje nowych formularzy.
Znaki specjalne i wyrazy
Znaki specjalne to znaki takie jak "," "", "©" i "™". Te znaki są rzadko używane w zapytaniach. Podziały wyrazów powinny usuwać znaki specjalne podczas tworzenia indeksu i w czasie wykonywania zapytania.
Zalecamy rozpoznawanie wyrazów podziału wyrazów, takich jak "C++", "C#", ".NET", oceny i notacja muzyczna. Podziały wyrazów mogą używać heurystyki językowej do identyfikowania wzorca dla słów specjalnych. Podziały wyrazów mogą również używać słownika niestandardowego zawierającego rozpoznane słowa specjalne.
Akronimy i skróty
Podczas implementowania wyłącznika wyrazów należy rozważyć skróty i skróty. W wielu językach poszczególne litery akronimów są oddzielone kropkami. Czasami wyrazy, które nie są rozpoznawane akronimami lub skrótami, są skracane. Na przykład "Stany Zjednoczone Ameryki" może być skrócony jako "USA" lub "USA". Wyłączniki wyrazów zawarte w usłudze Windows Search zwykle identyfikują wyrazy z jedną literą jako wyrazy szumu i traktują te wyrazy jako symbole zastępcze w czasie zapytania. W czasie zapytania podział wyrazów, który nie jest świadomy typowych akronimów lub który nie rozpoznaje skrótów, konwertuje skrót "USA" na "USA", "S" i "A". Ta dekompozycja nie dostarcza wystarczającej ilości informacji, aby dopasować wyrazy w indeksie pełnotekstowym, ponieważ wszystkie terminy zapytania są wyrazami szumu. Podczas tworzenia wyłącznika wyrazów zalecamy, aby podział wyrazów usuwał kropki oddzielające litery akronimów. W tym przykładzie wyrażenie "USA" jest przechowywane jako "USA" i termin zapytania, który zawiera zapytania "USA". Jeśli podział wyrazów przetwarza skrót, kropka w tym skrócie nie jest traktowana jako podział EOS. W związku z tym przerwanie wyrazów może nie być poprawnie identyfikowane, jeśli skrót znajduje się na końcu zdania.
Kapitalizacja
Usługa Windows Search nie zachowuje obecnie wielkości liter podczas zapisywania wyrazów w indeksie pełnotekstowym. Podziały wyrazów i stemmery nie powinny modyfikować wielkości liter wyrazów.
Spacje niezwiązane
Podczas tworzenia wyłącznika wyrazów zalecamy, aby upewnić się, że moduł podziału wyrazów traktuje spacje niełamające się jako separatory wyrazów. Zaleca się również, aby moduł podziału wyrazów generował alternatywne formy wyrazu z spacjami i bez niego. Niektóre znaki, takie jak podkreślenia, są znakami specjalnymi, które są traktowane jako znaki niełamające się ze względu na źródła tekstu, w którym zostały znalezione. Na przykład kod źródłowy lub nazwy plików mogą zawierać podkreślenia jako znaki niełamające się.
Pary zastępcze
Pary zastępcze to reprezentacje znaków w kodzie źródłowym, które reprezentują pojedynczy znak składający się z sekwencji dwóch wartości Unicode. W kodowanej parze pierwsza wartość jest wysokim zastępcą, a druga jest niskim zastępcą. Wysoki surogat jest znakiem w zakresie U+D800 do U+DBFF. Niski surogat jest znakiem w zakresie U+DC00 przez U+DFFF. Pary zastępcze rozszerzają zestaw znaków poza znakiem Unicode. Zalecamy, aby podczas obsługi par zastępczych używać następujących reguł:
- Wysoki zastępca musi poprzedzać niski zastępca.
- Niski zastępca musi podążać za wysokim zastępcą.
- Wysoki lub niski zastępca bez odpowiedniej wartości dla drugiej połowy nie ma znaczenia.
Podziały wyrazów muszą uwzględniać wszystkie pary i generować pary jako takie w indeksie. Aby uzyskać więcej informacji, zobacz zastępcze i znaki uzupełniające.