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