mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-31 07:57:35 +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
 |