mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 01:48:04 +03:00 
			
		
		
		
	* Add basic tests for Tamil (ta) * Add comment Remove superfluous condition * Remove superfluous call to `pipe` Instantiate new tokenizer for special case
		
			
				
	
	
		
			189 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import pytest
 | 
						|
from spacy.symbols import ORTH
 | 
						|
from spacy.lang.ta import Tamil
 | 
						|
 | 
						|
TA_BASIC_TOKENIZATION_TESTS = [
 | 
						|
    (
 | 
						|
        "கிறிஸ்துமஸ் மற்றும் இனிய புத்தாண்டு வாழ்த்துக்கள்",
 | 
						|
        ["கிறிஸ்துமஸ்", "மற்றும்", "இனிய", "புத்தாண்டு", "வாழ்த்துக்கள்"],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "எனக்கு என் குழந்தைப் பருவம் நினைவிருக்கிறது",
 | 
						|
        ["எனக்கு", "என்", "குழந்தைப்", "பருவம்", "நினைவிருக்கிறது"],
 | 
						|
    ),
 | 
						|
    ("உங்கள் பெயர் என்ன?", ["உங்கள்", "பெயர்", "என்ன", "?"]),
 | 
						|
    (
 | 
						|
        "ஏறத்தாழ இலங்கைத் தமிழரில் மூன்றிலொரு பங்கினர் இலங்கையை விட்டு வெளியேறிப் பிற நாடுகளில் வாழ்கின்றனர்",
 | 
						|
        [
 | 
						|
            "ஏறத்தாழ",
 | 
						|
            "இலங்கைத்",
 | 
						|
            "தமிழரில்",
 | 
						|
            "மூன்றிலொரு",
 | 
						|
            "பங்கினர்",
 | 
						|
            "இலங்கையை",
 | 
						|
            "விட்டு",
 | 
						|
            "வெளியேறிப்",
 | 
						|
            "பிற",
 | 
						|
            "நாடுகளில்",
 | 
						|
            "வாழ்கின்றனர்",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "இந்த ஃபோனுடன் சுமார் ரூ.2,990 மதிப்புள்ள போட் ராக்கர்ஸ் நிறுவனத்தின் ஸ்போர்ட் புளூடூத் ஹெட்போன்ஸ் இலவசமாக வழங்கப்படவுள்ளது.",
 | 
						|
        [
 | 
						|
            "இந்த",
 | 
						|
            "ஃபோனுடன்",
 | 
						|
            "சுமார்",
 | 
						|
            "ரூ.2,990",
 | 
						|
            "மதிப்புள்ள",
 | 
						|
            "போட்",
 | 
						|
            "ராக்கர்ஸ்",
 | 
						|
            "நிறுவனத்தின்",
 | 
						|
            "ஸ்போர்ட்",
 | 
						|
            "புளூடூத்",
 | 
						|
            "ஹெட்போன்ஸ்",
 | 
						|
            "இலவசமாக",
 | 
						|
            "வழங்கப்படவுள்ளது",
 | 
						|
            ".",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "மட்டக்களப்பில் பல இடங்களில் வீட்டுத் திட்டங்களுக்கு இன்று அடிக்கல் நாட்டல்",
 | 
						|
        [
 | 
						|
            "மட்டக்களப்பில்",
 | 
						|
            "பல",
 | 
						|
            "இடங்களில்",
 | 
						|
            "வீட்டுத்",
 | 
						|
            "திட்டங்களுக்கு",
 | 
						|
            "இன்று",
 | 
						|
            "அடிக்கல்",
 | 
						|
            "நாட்டல்",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "ஐ போன்க்கு முகத்தை வைத்து அன்லாக் செய்யும் முறை மற்றும் விரலால் தொட்டு அன்லாக் செய்யும் முறையை வாட்ஸ் ஆப் நிறுவனம் இதற்கு முன் கண்டுபிடித்தது",
 | 
						|
        [
 | 
						|
            "ஐ",
 | 
						|
            "போன்க்கு",
 | 
						|
            "முகத்தை",
 | 
						|
            "வைத்து",
 | 
						|
            "அன்லாக்",
 | 
						|
            "செய்யும்",
 | 
						|
            "முறை",
 | 
						|
            "மற்றும்",
 | 
						|
            "விரலால்",
 | 
						|
            "தொட்டு",
 | 
						|
            "அன்லாக்",
 | 
						|
            "செய்யும்",
 | 
						|
            "முறையை",
 | 
						|
            "வாட்ஸ்",
 | 
						|
            "ஆப்",
 | 
						|
            "நிறுவனம்",
 | 
						|
            "இதற்கு",
 | 
						|
            "முன்",
 | 
						|
            "கண்டுபிடித்தது",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "இது ஒரு வாக்கியம்.",
 | 
						|
        [
 | 
						|
            "இது",
 | 
						|
            "ஒரு",
 | 
						|
            "வாக்கியம்",
 | 
						|
            ".",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "தன்னாட்சி கார்கள் காப்பீட்டு பொறுப்பை உற்பத்தியாளரிடம் மாற்றுகின்றன",
 | 
						|
        [
 | 
						|
            "தன்னாட்சி",
 | 
						|
            "கார்கள்",
 | 
						|
            "காப்பீட்டு",
 | 
						|
            "பொறுப்பை",
 | 
						|
            "உற்பத்தியாளரிடம்",
 | 
						|
            "மாற்றுகின்றன",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "நடைபாதை விநியோக ரோபோக்களை தடை செய்வதை சான் பிரான்சிஸ்கோ கருதுகிறது",
 | 
						|
        [
 | 
						|
            "நடைபாதை",
 | 
						|
            "விநியோக",
 | 
						|
            "ரோபோக்களை",
 | 
						|
            "தடை",
 | 
						|
            "செய்வதை",
 | 
						|
            "சான்",
 | 
						|
            "பிரான்சிஸ்கோ",
 | 
						|
            "கருதுகிறது",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "லண்டன் ஐக்கிய இராச்சியத்தில் ஒரு பெரிய நகரம்.",
 | 
						|
        [
 | 
						|
            "லண்டன்",
 | 
						|
            "ஐக்கிய",
 | 
						|
            "இராச்சியத்தில்",
 | 
						|
            "ஒரு",
 | 
						|
            "பெரிய",
 | 
						|
            "நகரம்",
 | 
						|
            ".",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "என்ன வேலை செய்கிறீர்கள்?",
 | 
						|
        [
 | 
						|
            "என்ன",
 | 
						|
            "வேலை",
 | 
						|
            "செய்கிறீர்கள்",
 | 
						|
            "?",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "எந்த கல்லூரியில் படிக்கிறாய்?",
 | 
						|
        [
 | 
						|
            "எந்த",
 | 
						|
            "கல்லூரியில்",
 | 
						|
            "படிக்கிறாய்",
 | 
						|
            "?",
 | 
						|
        ],
 | 
						|
    ),
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize("text,expected_tokens", TA_BASIC_TOKENIZATION_TESTS)
 | 
						|
def test_ta_tokenizer_basic(ta_tokenizer, text, expected_tokens):
 | 
						|
    tokens = ta_tokenizer(text)
 | 
						|
    token_list = [token.text for token in tokens]
 | 
						|
    assert expected_tokens == token_list
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "text,expected_tokens",
 | 
						|
    [
 | 
						|
        (
 | 
						|
            "ஆப்பிள் நிறுவனம் யு.கே. தொடக்க நிறுவனத்தை ஒரு லட்சம் கோடிக்கு வாங்கப் பார்க்கிறது",
 | 
						|
            [
 | 
						|
                "ஆப்பிள்",
 | 
						|
                "நிறுவனம்",
 | 
						|
                "யு.கே.",
 | 
						|
                "தொடக்க",
 | 
						|
                "நிறுவனத்தை",
 | 
						|
                "ஒரு",
 | 
						|
                "லட்சம்",
 | 
						|
                "கோடிக்கு",
 | 
						|
                "வாங்கப்",
 | 
						|
                "பார்க்கிறது",
 | 
						|
            ],
 | 
						|
        )
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_ta_tokenizer_special_case(text, expected_tokens):
 | 
						|
    # Add a special rule to tokenize the initialism "யு.கே." (U.K., as
 | 
						|
    # in the country) as a single token.
 | 
						|
    nlp = Tamil()
 | 
						|
    nlp.tokenizer.add_special_case("யு.கே.", [{ORTH: "யு.கே."}])
 | 
						|
    tokens = nlp(text)
 | 
						|
 | 
						|
    token_list = [token.text for token in tokens]
 | 
						|
    assert expected_tokens == token_list
 |