如何将阿拉伯语文本拆分或标记为python中的句子

时间:2014-05-28 10:38:37

标签: python

我的问题我需要将阿拉伯语文本拆分或标记为句子,即每个句子以(。)结尾,然后将其标记为单词。和你看到的输出一样。我该怎么办呢。

text = """ طوقت الشرطة المكان، عقب انتهاء الوقت المحدد لهم بالمغادرة. وكان المهاجرون يسعون إلى   الوصول إلى بريطانيا، ويقولون إنه ليس أمامهم مكان آخر ليذهبوا إليه، بعد تدمير المخيمات. وكانت عدة حافلات تقل عشرات من أفراد الشرطة قد وصلت صباح الأربعاء إلى المخيمات. وتشارك الشرطة الآن في المواجهة مع النشطاء هناك، بحسب ما ذكره مراسل بي بي سي، بول آدمز، الموجود في المكان."""
posttext = text.decode('utf-8')
sentences = nltk.tokenize.wordpunct_tokenize(posttext)
print sentences


the output is :
[u'\u0637\u0648\u0642\u062a', u'\u0627\u0644\u0634\u0631\u0637\u0629', u'\u0627\u0644\u0645\u0643\u0627\u0646', u'\u060c', u'\u0639\u0642\u0628', u'\u0627\u0646\u062a\u0647\u0627\u0621', u'\u0627\u0644\u0648\u0642\u062a', u'\u0627\u0644\u0645\u062d\u062f\u062f', u'\u0644\u0647\u0645', u'\u0628\u0627\u0644\u0645\u063a\u0627\u062f\u0631\u0629', u'.', u'\u0648\u0643\u0627\u0646', u'\u0627\u0644\u0645\u0647\u0627\u062c\u0631\u0648\u0646', u'\u064a\u0633\u0639\u0648\u0646', u'\u0625\u0644\u0649', u'\u0627\u0644\u0648\u0635\u0648\u0644', u'\u0625\u0644\u0649', u'\u0628\u0631\u064a\u0637\u0627\u0646\u064a\u0627', u'\u060c', u'\u0648\u064a\u0642\u0648\u0644\u0648\u0646', u'\u0625\u0646\u0647', u'\u0644\u064a\u0633', u'\u0623\u0645\u0627\u0645\u0647\u0645', u'\u0645\u0643\u0627\u0646', u'\u0622\u062e\u0631', u'\u0644\u064a\u0630\u0647\u0628\u0648\u0627', u'\u0625\u0644\u064a\u0647', u'\u060c', u'\u0628\u0639\u062f', u'\u062a\u062f\u0645\u064a\u0631', u'\u0627\u0644\u0645\u062e\u064a\u0645\u0627\u062a', u'.', u'\u0648\u0643\u0627\u0646\u062a', u'\u0639\u062f\u0629', u'\u062d\u0627\u0641\u0644\u0627\u062a', u'\u062a\u0642\u0644', u'\u0639\u0634\u0631\u0627\u062a', u'\u0645\u0646', u'\u0623\u0641\u0631\u0627\u062f', u'\u0627\u0644\u0634\u0631\u0637\u0629', u'\u0642\u062f', u'\u0648\u0635\u0644\u062a', u'\u0635\u0628\u0627\u062d', u'\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621', u'\u0625\u0644\u0649', u'\u0627\u0644\u0645\u062e\u064a\u0645\u0627\u062a', u'.', u'\u0648\u062a\u0634\u0627\u0631\u0643', u'\u0627\u0644\u0634\u0631\u0637\u0629', u'\u0627\u0644\u0622\u0646', u'\u0641\u064a', u'\u0627\u0644\u0645\u0648\u0627\u062c\u0647\u0629', u'\u0645\u0639', u'\u0627\u0644\u0646\u0634\u0637\u0627\u0621', u'\u0647\u0646\u0627\u0643', u'\u060c', u'\u0628\u062d\u0633\u0628', u'\u0645\u0627', u'\u0630\u0643\u0631\u0647', u'\u0645\u0631\u0627\u0633\u0644', u'\u0628\u064a', u'\u0628\u064a', u'\u0633\u064a', u'\u060c', u'\u0628\u0648\u0644', u'\u0622\u062f\u0645\u0632', u'\u060c', u'\u0627\u0644\u0645\u0648\u062c\u0648\u062f', u'\u0641\u064a', u'\u0627\u0644\u0645\u0643\u0627\u0646', u'.']

2 个答案:

答案 0 :(得分:0)

我建议像这样使用nltk.sent_tokenize(text)

>>> text = """ طوقت الشرطة المكان، عقب انتهاء الوقت المحدد لهم بالمغادرة. وكان المهاجرون يسعون إلى   الوصول إلى بريطانيا، ويقولون إنه ليس أمامهم مكان آخر ليذهبوا إليه، بعد تدمير المخيمات. وكانت عدة حافلات تقل عشرات من أفراد الشرطة قد وصلت صباح الأربعاء إلى المخيمات. وتشارك الشرطة الآن في المواجهة مع النشطاء هناك، بحسب ما ذكره مراسل بي بي سي، بول آدمز، الموجود في المكان."""
>>> text = re.sub("؟", "?", text) # replace any ؟ with ?
>>> for sen in nltk.sent_tokenize(text):
...     print(sen)
 طوقت الشرطة المكان، عقب انتهاء الوقت المحدد لهم بالمغادرة.
وكان المهاجرون يسعون إلى   الوصول إلى بريطانيا، ويقولون إنه ليس أمامهم مكان آخر ليذهبوا إليه، بعد تدمير المخيمات.
وكانت عدة حافلات تقل عشرات من أفراد الشرطة قد وصلت صباح الأربعاء إلى المخيمات.
وتشارك الشرطة الآن في المواجهة مع النشطاء هناك، بحسب ما ذكره مراسل بي بي سي، بول آدمز، الموجود في المكان.

我们替换了“?”与“?”因为nltk.sent_tokenize()仅适用于英语。

旁注

句子标记化与您所描述的不同。例如,假设以下句子:

ا.د. مجدي يعقوب من أعظم الأطباء الجراحين بالعالم

应用建议的内容(基于拆分文本)时,首字母缩写“ا.د”将被拆分,这可能会导致无法预测的结果。另外,。不是分隔句子的唯一分隔符...也有!和?

答案 1 :(得分:-1)

为什么不呢:

text = " وقت الشرطة المكان، عقب انتهاء الوقت المحدد لهم بالمغادرة. وكان المهاجرون يسعون لى   الوصول إلى بريطانيا، ويقولون إنه ليس أمامهم مكان آخر ليذهبوا إليه، بعد تدمير المخيمات. وكانت عدة حافلات تقل عشرات من أفراد الشرطة قد وصلت صباح الأربعاء إلى المخيمات. وتشارك الشرطة الآن في المواجهة مع النشطاء هناك، بحسب ما ذكره مراسل بي بي سي، بول آدمز، الموجود في المكان."
posttext = text.decode('utf-8')

sentences = text.split(".")
for sentence in sentences:
    print sentence