Skip to content

Ngôn ngữ lách thuật toán và thao túng văn bản đối kháng

Tisane sử dụng mô-đun kiểm tra chính tả tích hợp đặc biệt để xử lý văn bản chứa cả lỗi không cố ý (sai chính tả) và thao túng văn bản đối kháng (ví dụ: ngôn ngữ né tránh thuật toán).

Bộ kiểm tra chính tả này sử dụng nhiều kỹ thuật khác nhau để xử lý các kiểu thao túng khác nhau (như thay thế ký tự, ẩn ký tự, v.v.). Việc sửa lỗi không giới hạn ở các từ tục tĩu hay xúc phạm, mà còn xem xét đến ngữ cảnh. Cùng một từ viết sai có thể được hiểu khác nhau theo các câu khác nhau.

Nếu phát hiện cần sửa lỗi trong một câu, thuộc tính corrected_text sẽ được gán cho câu đó và ghi lại văn bản đã được sửa. (Đặt words thành true để xuất dữ liệu theo từng câu.)

Hạn chế

Kiểm tra chính tả không phải là công cụ kiểu “ý bạn là...” như nhiều người vẫn tưởng:

  • Nếu từ là một từ hợp lệ, dù dùng sai ngữ cảnh hoặc mang tính học thuật, Tisane sẽ không sửa. Ví dụ: nếu noun bị viết sai thành nun, hoặc house bị viết sai thành horse, Tisane sẽ không phát hiện (trừ khi nó nằm trong cụm từ thường bị ngụy trang như corn star trong tiếng Anh).
  • Mục đích chính của bộ kiểm tra chính tả là giải mã từ ngữ ngụy trang. Do đó, nó thiên về phát hiện các khái niệm tục tĩu, gây phản cảm hoặc bị sử dụng sai phổ biến.

Loại trừ các nghĩa và từ ngữ hiếm để có kết quả tốt hơn

Để tránh vấn đề này, bạn có thể sử dụng tham số min_generic_frequency.

Điều này giúp loại trừ những nghĩa và từ ngữ hiếm gặp nhất.

Tần suất được đánh giá từ 0 đến 10, với 10 là phổ biến nhất.

Một số nghĩa cực kỳ hiếm được đánh giá ở mức -10.

Ban đầu, bạn nên đặt min_generic_frequency ở mức 1 hoặc2 để kiểm tra hiệu quả trong tình huống của bạn.

Loại trừ danh từ riêng tiềm năng

Nếu bạn muốn tránh việc kiểm tra chính tả đối với các danh từ riêng có thể có, hãy đặt lowercase_spellcheck_only thành true.

Ví dụ

Yêu cầu:

{
  "language":"en",
  "content":"I will br*k his neck and kll him",
  "settings": 
  {
    "words":true,"topics":false,"sentiment":false,"snippets":true
  }
}

Phản hồi:


	"text": "I will br*k his neck and kll him",
	"abuse": [
		{
			"sentence_index": 0,
			"offset": 0,
			"length": 32,
			"text": "I will br*k his neck and kll him",
			"type": "criminal_activity",
			"severity": "medium",
			"tags": [
				"threat",
				"violence",
				"death"
			]
		}
	],
	"sentence_list": [
		{
			"offset": 0,
			"text": "I will br*k his neck and kll him",
			"words": [
				{
					"type": "word",
					"offset": 0,
					"text": "I",
					"lettercase": "capitalized",
					"role": "agent",
					"lexeme": 63061,
					"family": 301,
					"grammar": [
						"PRON"
					],
					"stopword": true
				},
				{
					"type": "word",
					"offset": 2,
					"text": "will",
					"lexeme": 146938,
					"family": 316,
					"grammar": [
						"VERB"
					],
					"stopword": true
				},
				{
					"type": "word",
					"offset": 7,
					"text": "br*k",
					"role": "verb",
					"lexeme": 20996,
					"family": 107846,
					"grammar": [
						"VERB"
					]
				},
				{
					"type": "word",
					"offset": 12,
					"text": "his",
					"lexeme": 63064,
					"family": 303,
					"grammar": [
						"DET"
					],
					"stopword": true
				},
				{
					"type": "word",
					"offset": 16,
					"text": "neck",
					"lexeme": 93293,
					"family": 40510,
					"wikidata": "Q9633",
					"grammar": [
						"NOUN"
					]
				},
				{
					"type": "word",
					"offset": 21,
					"text": "and",
					"lexeme": 4096,
					"family": 322,
					"grammar": [
						"CCONJ"
					],
					"stopword": true
				},
				{
					"type": "word",
					"offset": 25,
					"text": "kll",
					"role": "verb",
					"lexeme": 77380,
					"family": 113102,
					"grammar": [
						"VERB"
					]
				},
				{
					"type": "word",
					"offset": 29,
					"text": "him",
					"role": "patient",
					"lexeme": 63062,
					"family": 303,
					"grammar": [
						"PRON"
					],
					"stopword": true
				}
			],
			"corrected_text": "I will break his neck and kill him"
		}
	]
}