pragmatic_segmenter 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -2
  3. data/lib/pragmatic_segmenter/abbreviation_replacer.rb +16 -51
  4. data/lib/pragmatic_segmenter/cleaner.rb +18 -99
  5. data/lib/pragmatic_segmenter/languages.rb +62 -0
  6. data/lib/pragmatic_segmenter/languages/amharic.rb +4 -30
  7. data/lib/pragmatic_segmenter/languages/arabic.rb +21 -64
  8. data/lib/pragmatic_segmenter/languages/armenian.rb +4 -30
  9. data/lib/pragmatic_segmenter/languages/burmese.rb +4 -30
  10. data/lib/pragmatic_segmenter/languages/chinese.rb +8 -0
  11. data/lib/pragmatic_segmenter/languages/common.rb +70 -1
  12. data/lib/pragmatic_segmenter/languages/deutsch.rb +49 -78
  13. data/lib/pragmatic_segmenter/languages/dutch.rb +5 -36
  14. data/lib/pragmatic_segmenter/languages/english.rb +3 -12
  15. data/lib/pragmatic_segmenter/languages/french.rb +5 -32
  16. data/lib/pragmatic_segmenter/languages/greek.rb +4 -26
  17. data/lib/pragmatic_segmenter/languages/hindi.rb +4 -30
  18. data/lib/pragmatic_segmenter/languages/italian.rb +3 -37
  19. data/lib/pragmatic_segmenter/languages/japanese.rb +6 -4
  20. data/lib/pragmatic_segmenter/languages/persian.rb +16 -40
  21. data/lib/pragmatic_segmenter/languages/polish.rb +6 -38
  22. data/lib/pragmatic_segmenter/languages/russian.rb +13 -33
  23. data/lib/pragmatic_segmenter/languages/spanish.rb +6 -31
  24. data/lib/pragmatic_segmenter/languages/urdu.rb +4 -30
  25. data/lib/pragmatic_segmenter/number.rb +5 -5
  26. data/lib/pragmatic_segmenter/process.rb +28 -49
  27. data/lib/pragmatic_segmenter/rules.rb +65 -1
  28. data/lib/pragmatic_segmenter/{ellipsis.rb → rules/ellipsis.rb} +0 -0
  29. data/lib/pragmatic_segmenter/rules/html.rb +13 -0
  30. data/lib/pragmatic_segmenter/segmenter.rb +12 -32
  31. data/lib/pragmatic_segmenter/version.rb +1 -1
  32. data/spec/pragmatic_segmenter_spec.rb +6 -7
  33. metadata +6 -8
  34. data/lib/pragmatic_segmenter/abbreviation.rb +0 -22
  35. data/lib/pragmatic_segmenter/language_support.rb +0 -31
  36. data/lib/pragmatic_segmenter/punctuation.rb +0 -12
  37. data/lib/pragmatic_segmenter/sentence_boundary_punctuation.rb +0 -17
  38. data/lib/pragmatic_segmenter/single_letter_abbreviation.rb +0 -37
@@ -1,47 +1,22 @@
1
1
  module PragmaticSegmenter
2
2
  module Languages
3
- class Spanish
4
- class Process < PragmaticSegmenter::Process
5
- private
3
+ module Spanish
4
+ include Languages::Common
6
5
 
7
- def replace_abbreviations(txt)
8
- PragmaticSegmenter::Languages::Spanish::AbbreviationReplacer.new(text: txt).replace
9
- end
10
- end
11
-
12
- class Cleaner < PragmaticSegmenter::Cleaner
13
- private
14
-
15
- def abbreviations
16
- PragmaticSegmenter::Languages::Spanish::Abbreviation.new.all
17
- end
18
- end
19
-
20
- class Abbreviation < PragmaticSegmenter::Abbreviation
6
+ module Abbreviation
21
7
  ABBREVIATIONS = ['a.c', 'a/c', 'abr', 'adj', 'admón', 'afmo', 'ago', 'almte', 'ap', 'apdo', 'arq', 'art', 'atte', 'av', 'avda', 'bco', 'bibl', 'bs. as', 'c', 'c.f', 'c.g', 'c/c', 'c/u', 'cap', 'cc.aa', 'cdad', 'cm', 'co', 'cra', 'cta', 'cv', 'd.e.p', 'da', 'dcha', 'dcho', 'dep', 'dic', 'dicc', 'dir', 'dn', 'doc', 'dom', 'dpto', 'dr', 'dra', 'dto', 'ee', 'ej', 'en', 'entlo', 'esq', 'etc', 'excmo', 'ext', 'f.c', 'fca', 'fdo', 'febr', 'ff. aa', 'ff.cc', 'fig', 'fil', 'fra', 'g.p', 'g/p', 'gob', 'gr', 'gral', 'grs', 'hnos', 'hs', 'igl', 'iltre', 'imp', 'impr', 'impto', 'incl', 'ing', 'inst', 'izdo', 'izq', 'izqdo', 'j.c', 'jue', 'jul', 'jun', 'kg', 'km', 'lcdo', 'ldo', 'let', 'lic', 'ltd', 'lun', 'mar', 'may', 'mg', 'min', 'mié', 'mm', 'máx', 'mín', 'mt', 'n. del t', 'n.b', 'no', 'nov', 'ntra. sra', 'núm', 'oct', 'p', 'p.a', 'p.d', 'p.ej', 'p.v.p', 'párrf', 'ppal', 'prev', 'prof', 'prov', 'ptas', 'pts', 'pza', 'pág', 'págs', 'párr', 'q.e.g.e', 'q.e.p.d', 'q.e.s.m', 'reg', 'rep', 'rr. hh', 'rte', 's', 's. a', 's.a.r', 's.e', 's.l', 's.r.c', 's.r.l', 's.s.s', 's/n', 'sdad', 'seg', 'sept', 'sig', 'sr', 'sra', 'sres', 'srta', 'sta', 'sto', 'sáb', 't.v.e', 'tamb', 'tel', 'tfno', 'ud', 'uu', 'uds', 'univ', 'v.b', 'v.e', 'vd', 'vds', 'vid', 'vie', 'vol', 'vs', 'vto', 'a', 'aero', 'ambi', 'an', 'anfi', 'ante', 'anti', 'archi', 'arci', 'auto', 'bi', 'bien', 'bis', 'co', 'com', 'con', 'contra', 'crio', 'cuadri', 'cuasi', 'cuatri', 'de', 'deci', 'des', 'di', 'dis', 'dr', 'ecto', 'en', 'endo', 'entre', 'epi', 'equi', 'ex', 'extra', 'geo', 'hemi', 'hetero', 'hiper', 'hipo', 'homo', 'i', 'im', 'in', 'infra', 'inter', 'intra', 'iso', 'lic', 'macro', 'mega', 'micro', 'mini', 'mono', 'multi', 'neo', 'omni', 'para', 'pen', 'ph', 'ph.d', 'pluri', 'poli', 'pos', 'post', 'pre', 'pro', 'pseudo', 're', 'retro', 'semi', 'seudo', 'sobre', 'sub', 'super', 'supra', 'trans', 'tras', 'tri', 'ulter', 'ultra', 'un', 'uni', 'vice', 'yuxta']
22
8
  PREPOSITIVE_ABBREVIATIONS = ['a', 'aero', 'ambi', 'an', 'anfi', 'ante', 'anti', 'archi', 'arci', 'auto', 'bi', 'bien', 'bis', 'co', 'com', 'con', 'contra', 'crio', 'cuadri', 'cuasi', 'cuatri', 'de', 'deci', 'des', 'di', 'dis', 'dr', 'ecto', 'ee', 'en', 'endo', 'entre', 'epi', 'equi', 'ex', 'extra', 'geo', 'hemi', 'hetero', 'hiper', 'hipo', 'homo', 'i', 'im', 'in', 'infra', 'inter', 'intra', 'iso', 'lic', 'macro', 'mega', 'micro', 'mini', 'mono', 'mt', 'multi', 'neo', 'omni', 'para', 'pen', 'ph', 'ph.d', 'pluri', 'poli', 'pos', 'post', 'pre', 'pro', 'prof', 'pseudo', 're', 'retro', 'semi', 'seudo', 'sobre', 'sub', 'super', 'supra', 'sra', 'srta', 'trans', 'tras', 'tri', 'ulter', 'ultra', 'un', 'uni', 'vice', 'yuxta']
23
9
  NUMBER_ABBREVIATIONS = ['cra', 'ext', 'no', 'nos', 'p', 'pp', 'tel']
24
-
25
- def all
26
- ABBREVIATIONS
27
- end
28
-
29
- def prepositive
30
- PREPOSITIVE_ABBREVIATIONS
31
- end
32
-
33
- def number
34
- NUMBER_ABBREVIATIONS
35
- end
36
10
  end
37
11
 
38
- class AbbreviationReplacer < PragmaticSegmenter::AbbreviationReplacer
12
+ class Cleaner < Cleaner
39
13
  private
40
14
 
41
15
  def abbreviations
42
- PragmaticSegmenter::Languages::Spanish::Abbreviation.new
16
+ Abbreviation::ABBREVIATIONS
43
17
  end
44
18
  end
19
+
45
20
  end
46
21
  end
47
22
  end
@@ -1,36 +1,10 @@
1
1
  module PragmaticSegmenter
2
2
  module Languages
3
- class Urdu
4
- class Process < PragmaticSegmenter::Process
5
- private
3
+ module Urdu
4
+ include Languages::Common
6
5
 
7
- def sentence_boundary_punctuation(txt)
8
- PragmaticSegmenter::Languages::Urdu::SentenceBoundaryPunctuation.new(text: txt).split
9
- end
10
-
11
- def punctuation_array
12
- PragmaticSegmenter::Languages::Urdu::Punctuation.new.punct
13
- end
14
- end
15
-
16
- class Cleaner < PragmaticSegmenter::Cleaner
17
- end
18
-
19
- class SentenceBoundaryPunctuation < PragmaticSegmenter::SentenceBoundaryPunctuation
20
- SENTENCE_BOUNDARY = /.*?[۔؟!\?]|.*?$/
21
-
22
- def split
23
- text.scan(SENTENCE_BOUNDARY)
24
- end
25
- end
26
-
27
- class Punctuation < PragmaticSegmenter::Punctuation
28
- PUNCT = ['?', '!', '۔', '؟']
29
-
30
- def punct
31
- PUNCT
32
- end
33
- end
6
+ SENTENCE_BOUNDARY_REGEX = /.*?[۔؟!\?]|.*?$/
7
+ Punctuations = ['?', '!', '۔', '؟']
34
8
  end
35
9
  end
36
10
  end
@@ -25,11 +25,11 @@ module PragmaticSegmenter
25
25
  end
26
26
 
27
27
  def replace
28
- @text.apply(PeriodBeforeNumberRule).
29
- apply(NumberAfterPeriodBeforeLetterRule).
30
- apply(NewLineNumberPeriodSpaceLetterRule).
31
- apply(StartLineNumberPeriodRule).
32
- apply(StartLineTwoDigitNumberPeriodRule)
28
+ @text.apply PeriodBeforeNumberRule,
29
+ NumberAfterPeriodBeforeLetterRule,
30
+ NewLineNumberPeriodSpaceLetterRule,
31
+ StartLineNumberPeriodRule,
32
+ StartLineTwoDigitNumberPeriodRule
33
33
  end
34
34
  end
35
35
  end
@@ -2,45 +2,28 @@
2
2
  require 'pragmatic_segmenter/list'
3
3
  require 'pragmatic_segmenter/abbreviation_replacer'
4
4
  require 'pragmatic_segmenter/number'
5
- require 'pragmatic_segmenter/ellipsis'
5
+ require 'pragmatic_segmenter/rules/ellipsis'
6
6
  require 'pragmatic_segmenter/exclamation_words'
7
7
  require 'pragmatic_segmenter/punctuation_replacer'
8
8
  require 'pragmatic_segmenter/between_punctuation'
9
- require 'pragmatic_segmenter/sentence_boundary_punctuation'
10
- require 'pragmatic_segmenter/punctuation'
11
9
 
12
10
  module PragmaticSegmenter
13
11
  # This class processing segmenting the text.
14
12
  class Process
15
- include Rules
16
- # Rubular: http://rubular.com/r/NqCqv372Ix
17
- QUOTATION_AT_END_OF_SENTENCE_REGEX = /[!?\.-][\"\'\u{201d}\u{201c}]\s{1}[A-Z]/
18
13
 
19
- # Rubular: http://rubular.com/r/6flGnUMEVl
20
- PARENS_BETWEEN_DOUBLE_QUOTES_REGEX = /["”]\s\(.*\)\s["“]/
21
-
22
- # Rubular: http://rubular.com/r/TYzr4qOW1Q
23
- BETWEEN_DOUBLE_QUOTES_REGEX = /"(?:[^"])*[^,]"|“(?:[^”])*[^,]”/
24
-
25
- # Rubular: http://rubular.com/r/JMjlZHAT4g
26
- SPLIT_SPACE_QUOTATION_AT_END_OF_SENTENCE_REGEX = /(?<=[!?\.-][\"\'\u{201d}\u{201c}])\s{1}(?=[A-Z])/
27
-
28
- # Rubular: http://rubular.com/r/mQ8Es9bxtk
29
- CONTINUOUS_PUNCTUATION_REGEX = /(?<=\S)(!|\?){3,}(?=(\s|\z|$))/
30
-
31
- attr_reader :text, :doc_type
32
- def initialize(text:, doc_type:)
14
+ attr_reader :text
15
+ def initialize(text:, language: Languages::Common)
33
16
  @text = text
34
- @doc_type = doc_type
17
+ @language = language
35
18
  end
36
19
 
37
20
  def process
38
- reformatted_text = PragmaticSegmenter::List.new(text: text).add_line_break
21
+ reformatted_text = List.new(text: text).add_line_break
39
22
  reformatted_text = replace_abbreviations(reformatted_text)
40
23
  reformatted_text = replace_numbers(reformatted_text)
41
24
  reformatted_text = replace_continuous_punctuation(reformatted_text)
42
- reformatted_text.apply(AbbreviationsWithMultiplePeriodsAndEmailRule)
43
- reformatted_text.apply(GeoLocationRule)
25
+ reformatted_text.apply(@language::AbbreviationsWithMultiplePeriodsAndEmailRule)
26
+ reformatted_text.apply(@language::GeoLocationRule)
44
27
  split_into_segments(reformatted_text)
45
28
  end
46
29
 
@@ -48,34 +31,34 @@ module PragmaticSegmenter
48
31
 
49
32
  def split_into_segments(txt)
50
33
  check_for_parens_between_quotes(txt).split("\r")
51
- .map! { |segment| segment.apply(SingleNewLineRule, EllipsisRules::All) }
34
+ .map! { |segment| segment.apply(@language::SingleNewLineRule, @language::EllipsisRules::All) }
52
35
  .map { |segment| check_for_punctuation(segment) }.flatten
53
- .map! { |segment| segment.apply(SubSymbolsRules::All) }
36
+ .map! { |segment| segment.apply(@language::SubSymbolsRules::All) }
54
37
  .map { |segment| post_process_segments(segment) }
55
38
  .flatten.compact.delete_if(&:empty?)
56
- .map! { |segment| segment.apply(SubSingleQuoteRule) }
39
+ .map! { |segment| segment.apply(@language::SubSingleQuoteRule) }
57
40
  end
58
41
 
59
42
  def post_process_segments(txt)
60
43
  return if consecutive_underscore?(txt) || txt.length < 2
61
- txt.apply(ReinsertEllipsisRules::All).apply(ExtraWhiteSpaceRule)
62
- if txt =~ QUOTATION_AT_END_OF_SENTENCE_REGEX
63
- txt.split(SPLIT_SPACE_QUOTATION_AT_END_OF_SENTENCE_REGEX)
44
+ txt.apply(@language::ReinsertEllipsisRules::All).apply(@language::ExtraWhiteSpaceRule)
45
+ if txt =~ @language::QUOTATION_AT_END_OF_SENTENCE_REGEX
46
+ txt.split(@language::SPLIT_SPACE_QUOTATION_AT_END_OF_SENTENCE_REGEX)
64
47
  else
65
48
  txt.tr("\n", '').strip
66
49
  end
67
50
  end
68
51
 
69
52
  def check_for_parens_between_quotes(txt)
70
- return txt unless txt =~ PARENS_BETWEEN_DOUBLE_QUOTES_REGEX
71
- txt.gsub!(PARENS_BETWEEN_DOUBLE_QUOTES_REGEX) do |match|
53
+ return txt unless txt =~ @language::PARENS_BETWEEN_DOUBLE_QUOTES_REGEX
54
+ txt.gsub!(@language::PARENS_BETWEEN_DOUBLE_QUOTES_REGEX) do |match|
72
55
  match.gsub(/\s(?=\()/, "\r").gsub(/(?<=\))\s/, "\r")
73
56
  end
74
57
  end
75
58
 
76
59
  def replace_continuous_punctuation(txt)
77
- return txt unless txt =~ CONTINUOUS_PUNCTUATION_REGEX
78
- txt.gsub!(CONTINUOUS_PUNCTUATION_REGEX) do |match|
60
+ return txt unless txt =~ @language::CONTINUOUS_PUNCTUATION_REGEX
61
+ txt.gsub!(@language::CONTINUOUS_PUNCTUATION_REGEX) do |match|
79
62
  match.gsub(/!/, '&ᓴ&').gsub(/\?/, '&ᓷ&')
80
63
  end
81
64
  end
@@ -86,7 +69,7 @@ module PragmaticSegmenter
86
69
  end
87
70
 
88
71
  def check_for_punctuation(txt)
89
- if punctuation_array.any? { |p| txt.include?(p) }
72
+ if @language::Punctuations.any? { |p| txt.include?(p) }
90
73
  process_text(txt)
91
74
  else
92
75
  txt
@@ -94,36 +77,32 @@ module PragmaticSegmenter
94
77
  end
95
78
 
96
79
  def process_text(txt)
97
- txt << 'ȸ' unless punctuation_array.any? { |p| txt[-1].include?(p) }
98
- PragmaticSegmenter::ExclamationWords.apply_rules(txt)
80
+ txt << 'ȸ' unless @language::Punctuations.any? { |p| txt[-1].include?(p) }
81
+ ExclamationWords.apply_rules(txt)
99
82
  between_punctuation(txt)
100
83
  txt = txt.apply(
101
- DoublePunctuationRules::All,
102
- QuestionMarkInQuotationRule,
103
- ExclamationPointRules::All
84
+ @language::DoublePunctuationRules::All,
85
+ @language::QuestionMarkInQuotationRule,
86
+ @language::ExclamationPointRules::All
104
87
  )
105
- txt = PragmaticSegmenter::List.new(text: txt).replace_parens
88
+ txt = List.new(text: txt).replace_parens
106
89
  sentence_boundary_punctuation(txt)
107
90
  end
108
91
 
109
92
  def replace_numbers(txt)
110
- PragmaticSegmenter::Number.new(text: txt).replace
93
+ Number.new(text: txt).replace
111
94
  end
112
95
 
113
96
  def replace_abbreviations(txt)
114
- PragmaticSegmenter::AbbreviationReplacer.new(text: txt).replace
115
- end
116
-
117
- def punctuation_array
118
- @punct_arr ||= PragmaticSegmenter::Punctuation.new.punct
97
+ AbbreviationReplacer.new(text: txt, language: @language).replace
119
98
  end
120
99
 
121
100
  def between_punctuation(txt)
122
- PragmaticSegmenter::BetweenPunctuation.new(text: txt).replace
101
+ BetweenPunctuation.new(text: txt).replace
123
102
  end
124
103
 
125
104
  def sentence_boundary_punctuation(txt)
126
- PragmaticSegmenter::SentenceBoundaryPunctuation.new(text: txt).split
105
+ txt.scan(@language::SENTENCE_BOUNDARY_REGEX)
127
106
  end
128
107
  end
129
108
  end
@@ -1,5 +1,69 @@
1
+ require 'pragmatic_segmenter/rules/html'
2
+
1
3
  module PragmaticSegmenter
2
4
  module Rules
5
+
6
+ URL_EMAIL_KEYWORDS = ['@', 'http', '.com', 'net', 'www', '//']
7
+
8
+ # Rubular: http://rubular.com/r/6dt98uI76u
9
+ NO_SPACE_BETWEEN_SENTENCES_REGEX = /(?<=[a-z])\.(?=[A-Z])/
10
+
11
+ # Rubular: http://rubular.com/r/l6KN6rH5XE
12
+ NO_SPACE_BETWEEN_SENTENCES_DIGIT_REGEX = /(?<=\d)\.(?=[A-Z])/
13
+
14
+ # Rubular: http://rubular.com/r/V57WnM9Zut
15
+ NewLineInMiddleOfWordRule = Rule.new(/\n(?=[a-zA-Z]{1,2}\n)/, '')
16
+
17
+ # Rubular: http://rubular.com/r/3GiRiP2IbD
18
+ NEWLINE_IN_MIDDLE_OF_SENTENCE_REGEX = /(?<=\s)\n(?=([a-z]|\())/
19
+
20
+ # Rubular: http://rubular.com/r/UZAVcwqck8
21
+ PDF_NewLineInMiddleOfSentenceRule = Rule.new(/(?<=[^\n]\s)\n(?=\S)/, '')
22
+
23
+ # Rubular: http://rubular.com/r/eaNwGavmdo
24
+ PDF_NewLineInMiddleOfSentenceNoSpacesRule = Rule.new(/\n(?=[a-z])/, ' ')
25
+
26
+ # Rubular: http://rubular.com/r/bAJrhyLNeZ
27
+ InlineFormattingRule = Rule.new(/\{b\^&gt;\d*&lt;b\^\}|\{b\^>\d*<b\^\}/, '')
28
+
29
+ # Rubular: http://rubular.com/r/dMxp5MixFS
30
+ DoubleNewLineWithSpaceRule = Rule.new(/\n \n/, "\r")
31
+
32
+ # Rubular: http://rubular.com/r/H6HOJeA8bq
33
+ DoubleNewLineRule = Rule.new(/\n\n/, "\r")
34
+
35
+ # Rubular: http://rubular.com/r/Gn18aAnLdZ
36
+ NewLineFollowedByBulletRule = Rule.new(/\n(?=•)/, "\r")
37
+
38
+ # Rubular: http://rubular.com/r/FseyMiiYFT
39
+ NewLineFollowedByPeriodRule = Rule.new(/\n(?=\.(\s|\n))/, '')
40
+
41
+ # Rubular: http://rubular.com/r/8mc1ArOIGy
42
+ TableOfContentsRule = Rule.new(/\.{5,}\s*\d+-*\d*/, "\r")
43
+
44
+ # Rubular: http://rubular.com/r/DwNSuZrNtk
45
+ ConsecutivePeriodsRule = Rule.new(/\.{5,}/, ' ')
46
+
47
+ # Rubular: http://rubular.com/r/IQ4TPfsbd8
48
+ ConsecutiveForwardSlashRule = Rule.new(/\/{3}/, '')
49
+
50
+ # Rubular: http://rubular.com/r/6dt98uI76u
51
+ NoSpaceBetweenSentencesRule = Rule.new(NO_SPACE_BETWEEN_SENTENCES_REGEX, '. ')
52
+
53
+ # Rubular: http://rubular.com/r/l6KN6rH5XE
54
+ NoSpaceBetweenSentencesDigitRule = Rule.new(NO_SPACE_BETWEEN_SENTENCES_DIGIT_REGEX, '. ')
55
+
56
+ EscapedCarriageReturnRule = Rule.new(/\\r/, "\r")
57
+ TypoEscapedCarriageReturnRule = Rule.new(/\\\ r/, "\r")
58
+
59
+ EscapedNewLineRule = Rule.new(/\\n/, "\n")
60
+ TypoEscapedNewLineRule = Rule.new(/\\\ n/, "\n")
61
+
62
+ ReplaceNewlineWithCarriageReturnRule = Rule.new(/\n/, "\r")
63
+
64
+ QuotationsFirstRule = Rule.new(/''/, '"')
65
+ QuotationsSecondRule = Rule.new(/``/, '"')
66
+
3
67
  # Rubular: http://rubular.com/r/EUbZCNfgei
4
68
  AbbreviationsWithMultiplePeriodsAndEmailRule = Rule.new(/(\w)(\.)(\w)/, '\1∮\3')
5
69
 
@@ -101,4 +165,4 @@ module PragmaticSegmenter
101
165
  SubLeftBracket, SubRightBracket, SubDash ]
102
166
  end
103
167
  end
104
- end
168
+ end
@@ -0,0 +1,13 @@
1
+ module PragmaticSegmenter
2
+ module Rules
3
+ module HTMLRules
4
+ # Rubular: http://rubular.com/r/ENrVFMdJ8v
5
+ HTMLTagRule = Rule.new(/<\/?[^>]*>/, '')
6
+
7
+ # Rubular: http://rubular.com/r/XZVqMPJhea
8
+ EscapedHTMLTagRule = Rule.new(/&lt;\/?[^gt;]*gt;/, '')
9
+
10
+ All = [HTMLTagRule, EscapedHTMLTagRule]
11
+ end
12
+ end
13
+ end
@@ -1,47 +1,27 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'pragmatic_segmenter/types'
3
- require 'pragmatic_segmenter/process'
4
- require 'pragmatic_segmenter/cleaner'
5
- require 'pragmatic_segmenter/languages/english'
6
- require 'pragmatic_segmenter/languages/deutsch'
7
- require 'pragmatic_segmenter/languages/hindi'
8
- require 'pragmatic_segmenter/languages/persian'
9
- require 'pragmatic_segmenter/languages/amharic'
10
- require 'pragmatic_segmenter/languages/arabic'
11
- require 'pragmatic_segmenter/languages/greek'
12
- require 'pragmatic_segmenter/languages/armenian'
13
- require 'pragmatic_segmenter/languages/burmese'
14
- require 'pragmatic_segmenter/languages/urdu'
15
- require 'pragmatic_segmenter/languages/french'
16
- require 'pragmatic_segmenter/languages/italian'
17
- require 'pragmatic_segmenter/languages/spanish'
18
- require 'pragmatic_segmenter/languages/russian'
19
- require 'pragmatic_segmenter/languages/japanese'
20
- require 'pragmatic_segmenter/languages/dutch'
21
- require 'pragmatic_segmenter/languages/polish'
22
- require 'pragmatic_segmenter/languages/common'
23
- require 'pragmatic_segmenter/language_support'
24
- require 'pragmatic_segmenter/rules'
2
+ require 'pragmatic_segmenter/languages'
25
3
 
26
4
  module PragmaticSegmenter
27
5
  # This class segments a text into an array of sentences.
28
6
  class Segmenter
29
- include LanguageSupport
7
+ include Languages
30
8
  attr_reader :text, :language, :doc_type
31
9
 
32
- def initialize(text:, **args)
10
+ def initialize(text:, language: nil, doc_type: nil, clean: true)
33
11
  return unless text
34
- @language = args[:language] || 'en'
35
- @doc_type = args[:doc_type]
36
- @text = text.dup
37
- unless args[:clean].eql?(false)
38
- @text = cleaner_class.new(text: @text, doc_type: args[:doc_type]).clean
12
+ @language = language || 'en'
13
+ @doc_type = doc_type
14
+
15
+ if clean
16
+ @text = cleaner_class.new(text: text, doc_type: @doc_type).clean
17
+ else
18
+ @text = text
39
19
  end
40
20
  end
41
21
 
42
22
  def segment
43
- return [] unless text
44
- process_class.new(text: text, doc_type: doc_type).process
23
+ return [] unless @text
24
+ process_class.new(text: @text, language: language_module).process
45
25
  end
46
26
  end
47
27
  end
@@ -1,3 +1,3 @@
1
1
  module PragmaticSegmenter
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -87,11 +87,10 @@ RSpec.describe PragmaticSegmenter::Segmenter do
87
87
  expect(ps.segment).to eq(["I have lived in the U.S. for 20 years."])
88
88
  end
89
89
 
90
- xdescribe "not yet implemented" do
91
- it "A.M. / P.M. as non sentence boundary and sentence boundary #018" do
92
- ps = PragmaticSegmenter::Segmenter.new(text: "At 5 a.m. Mr. Smith went to the bank. He left the bank at 6 P.M. Mr. Smith then went to the store.", language: "en")
93
- expect(ps.segment).to eq(["At 5 a.m. Mr. Smith went to the bank.", "He left the bank at 6 P.M.", "Mr. Smith then went to the store."])
94
- end
90
+ it "A.M. / P.M. as non sentence boundary and sentence boundary #018" do
91
+ skip "NOT IMPLEMENTED"
92
+ ps = PragmaticSegmenter::Segmenter.new(text: "At 5 a.m. Mr. Smith went to the bank. He left the bank at 6 P.M. Mr. Smith then went to the store.", language: "en")
93
+ expect(ps.segment).to eq(["At 5 a.m. Mr. Smith went to the bank.", "He left the bank at 6 P.M.", "Mr. Smith then went to the store."])
95
94
  end
96
95
 
97
96
  it "Number as non sentence boundary #019" do
@@ -1547,8 +1546,8 @@ RSpec.describe PragmaticSegmenter::Segmenter do
1547
1546
  end
1548
1547
 
1549
1548
  it "correctly segments text #105" do
1550
- ps = PragmaticSegmenter::Segmenter.new(text: "Panoramica orientativa di Roma\n\nCosto: Euro 30     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nVolete scoprire la magica atmosfera di Roma di notte con pullman privato e guida a vostra disposizione?\nPartiremo dal teatro di Marcello per vedere il maestoso altare della patria illuminato,continueremo per Via dei fori imperiali per ammirare dall'alto il Colosseo, dove avremo l'opportunità di fermarci e fare le più belle foto.\nLa nostra visita prosegue verso la Basilica di San Giovanni, cattedrale di Roma, Santa Maria Maggiore con i mosaici del XIII sec, Piazza della Repubblica dove troveremo la fontana delle Naiadi chiamata anche fontana dell'amore,la chiesa di Santa Maria degli angeli progetto di Michelangelo, la celebre Via Veneto famosa per la dolce vita di Fellini con gli alberghi più lussuosi e i caffè più chic attraverseremo inoltre Villa Borghese, una delle ville più belle di Roma dove visse Paolina Bonaparte vi indicheremo la splendida Piazza del Popolo, lungo Tevere, pasSando dinanzi al palazzo di giustizia, Castel Sant’Angelo e la spettacolare Basilica di San Pietro, sormontata dalla splendida cupola illuminata, indicandovi l'appartamento papale.\nContinuando per il lungo Tevere vedremo i ponti di Roma, l'isola tiberina e torneremo al punto di partenza.\nper chi volesse, prenotando, vi daremo la possibilità di cenare nei nostri ristoranti tipici con musica.\n \nDurata:????\nPersone minimo: (min 15 pax max 40 pax)\nvisita con pullman privato e guida \nImporto: € 35\nvisita con pullman privato guida e cena in ristorante tipico con musica\nimporto: € 65\nPunto d’incontro: Teatro di Marcello ( Via del teatro di Marcello fermata bus turistici)\n\n\n\n\n\n\n\n\n\n\n\n\n\nMusei Vaticani, Cappella Sistina,San Pietro\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nVuoi conoscere le opere più celebri di Michelangelo e di Raffaello senza fare la fila e con prenotazione?\n \nEntra nella magia dei musei vaticani, affidati all'esperienza della nostre guide ufficiali di Roma che ti guideranno nelle gallerie più importanti del museo vaticano.\nRimarrai affascinato dal cortile della pigna, opera del bramante (XVI)sec.\nTi condurremo nel cortile ottagonale dove troverete “il laocoonte” una delle poche opere al mondo originali greche (I sec a.c),dalle quale lo stesso Michelangelo prese ispirazione per i suoi capolavori.\nCammineremo sui mosaici originali Romani dell'epoca imperiale (II/III d.c).\nInoltre visiteremo la sala della rotonda con le opere della colossale Domus Aurea( la casa di Nerone) la sala a croce greca,la sala dei candelabri,la galleria degli arazzi della scuola di Raffaello,galleria delle carte geografiche,le stanze di Raffaello e la straordinaria bellezza della cappella Sistina con gli affreschi tridimensionali di Michelangelo.\nBasilica di San Pietro\nDopo aver spiegato l'architettura dei palazzi e della Piazza,ti accompagneremo all'interno dell'imponente Basilica ,costruita originariamente da Costantino sulla tomba dell'apostolo Pietro.\nEntrando perderai il vero senso della proporzione, ammireremo la prima pietà di Michelangelo(1499),la tomba di Giovanni paolo II.\nIl maestoso baldacchino del Bernini costruito con il bronzo fuso del pantheon,(II sec d.c)e la gloria del Bernini.\nAlzando gli occhi ci perderemo nell'immensità della cupola, costruita da Michelangelo, portando con voi le più belle fotografie in ricordo di questa visita indimenticabile.\nBasilica di San Pietro senza fila con guida e auricolari\nDurata: 2 ore\nPersone: min 15pax max 40\nImporto: € 20\n\nMusei vaticani cappella Sistina e stanze di Raffaello senza fila con guida e auricolari inclusi ingressi\nDurata: 3 ore\nPersone: min 15pax max 40\nImporto € 39 euro\npunto incontro: Obelisco Piazza s.Pietro\n\nMusei vaticani cappella Sistina e Basilica di San Pietro (senza stanze di raffaello)\nDurata: 3 ore \nPersone: min 15pax max 40\nImporto: 45 euro\n\n\nTour privato (itinerario a scelta 3 ore )\nImporto € 320 (max 5 persone)\nImporto € 50 a persona (da 6 persone a 14 persone )\n\ningresso con prenotazione musei vaticani senza fila € 24\npunto d'incontro musei vaticani (Via leone IV civico 57)\n\n\n\nColosseo Foro Romano San Pietro in Vincoli\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nUna delle sette meraviglie del mondo, origine di qualsiasi stadio moderno,eretto da vespasiano ed ultimato in soli 8 anni da Tito.\n \nAll' interno scopriremo insieme alle nostre guide ufficiali luoghi inediti senza fare fila e con prenotazione.\nVi porteremo indietro di quasi 2000 anni nella colossale opera architettonica, facendovi rivivere le cruente lotte tra le belve feroci e i valorosi gladiatori.\nColosseo\nuna delle sette meraviglie del mondo, origine di qualsiasi stadio moderno,eretto da vespasiano ed ultimato in soli 8 anni da Tito.\nAll' interno scopriremo insieme alle nostre guide ufficiali luoghi inediti senza fare fila e con prenotazione.\nVi porteremo indietro di quasi 2000 anni nella colossale opera architettonica, facendovi rivivere le cruente lotte tra le belve feroci e i valorosi gladiatori.\nForo Romano\n\nProseguendo la nostra passeggiata archeologica,come nell'antica Roma, seguiremo le orme degli imperatori percorrendo la marcia triunfalis ,partendo dall'arco di Costantino, passando sotto l'arco di Tito, entreremo nel foro Romano, centro sociale, politico ed economico.\nVisiteremo il senato, dove nacque il diritto Romano, il lapis niger, famosa tomba di Romolo, celebre fondatore di Roma e.....\nSan Pietro in vincoli\nLa nostra visita continua all'interno della Basilica eudossiana nota come San Pietro in vincoli, per il vincolo delle catene di San Pietro, dove ammireremo la sconvolgente opera scultorica di Michelangelo :il Mosè.\n\n\n\n\n\n\n\n\n\n\n\n\nPiazze e Fontane di Roma\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nPasseggiando tra le boutique più esclusive di Via Condotti,le nostre guide vi condurranno a Piazza di Spagna dove vi apparirà la scenografica scalinata di trinità dei monti, 101 gradini che hanno visto sfilare le più belle modelle del mondo.\n \nDopo esserci dissetati con la fresca acqua della fontana della barcaccia di Pietro Bernini continueremo il nostro itinerario verso la fontana di Trevi unica al Mondo addossata ad un palazzo, dove il Dio oceano sul suo carro alato emerge con impeto dalle acque dominando la scena.\nL'apoteosi del naturalismo che la vede protagonista di un contesto urbanistico unico al Mondo.\nProseguendo per Piazza Colonna ,vedremo l'area costituzionale, il parlamento, il palazzo del governo e inoltrandoci nei suggestivi vicoli di Roma all'improvviso ci apparirà Piazza della Rotonda con il maestoso pantheon, uno dei monumenti unici al mondo che mantiene intatta la struttura architettonica dell'epoca Adrianea (II sec d.c.)\nLa nostra visita si concluderà a Piazza Navona, antico stadio di Domiziano,successivamente teatro di gare acquatiche dovebdomina lo scenario, la fontana dei 4 fiumi di g. Lorenzo Bernini.\nLe nostre guide,per recuperare le forze dopo la passeggiata, vi indicheranno la gelateria dove è stato inventato il famoso “tartufo di Roma”.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRoma Cristiana\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nNormalmente si pensa che la cattedrale di Roma sia San Pietro, in realtà è la Basilica di San Giovanni in Laterano poiché fu la prima eretta a Roma da Costantino imperatore cristiano nei terreni dei laterani (IV d.c).\n \nLe nostre guide esperte vi mostreranno la maestosa facciata in marmo travertino con le sue 15 grandi statue alte ben 7 metri.\nEntrando nella Basilica passeremo a lato della porta Santa, vedremo la ricostruzione borrominiana (XVII) sec., il mosaico del XIII sec, l'organo più grande di Roma e il luogo dove secondo la tradizione si conservano le tEste di San Pietro e Paolo e tanto altro ancora.\nLa visita continuerà all'interno dell'edificio dove si conserva la scala Santa che secondo la tradizione Gesù salì dopo la flagellazione. Vi daremo anche l'opportunità di poterla salire in ginocchio per guadagnare l'indulgenza.\nProseguiremo per Via Merulana fino ad arrivare a Santa Maria Maggiore, come fa il Santo padre il giorno del corpus domini.\nSanta Maria maggiore unica Basilica patriarcale che mantiene intatta la struttura originaria del sec. (V d.c.) eretta nel luogo dove avvenne il miracolo della neve caduta il 5 agosto.\nOsserveremo all'intermo i mosaici, unici al mondo per la loro bellezza e antichità , alzando gli occhi vedrete lo splendore del soffitto con girali e rose in oro massiccio. La visita terminerà dinanzi alle reliquie delle mangiatoia di Gesù.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRoma sotterranea\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nLe nostre guide specializzate in archeologia,  vi accompagneranno a scoprire i misteri di Roma sotterranea.\n \nInizieremo la visita nella Basilica di San Clemente uno dei più straordinari e ben conservati palinsesti monumentali della città.\nScenderemo al livello sotterraneo,originario della primitiva domus II sec. vedendo uno degli esempi più importanti di ara sacrificale di culto mitraico.\nRisalendo troveremo la chiesa paleocristiana del IV sec. che si conservò fino all'XI sec. dove potremmo ammirare gli affreschi coevi della leggenda di sisinnio.\nUscendo dalla Basilica saliremo sul nostro pullman privato, passando accanto alle famose terme di Caracalla e proseguendo per la Via Appia antica ,strada consolare del IV sec a.c. ,vi mostreremo dove avvenne l'episodio del quo vadis, fino ad arrivare alle catacombe, chilometri di gallerie sotterranee scavate da primi cristiani all'epoca delle persecuzioni.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nVisita a Castel Sant'Angelo\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nRoma Magic Tour vi propone l'estate Romana con visita notturna inedita di Castel Sant'Angelo e con possibilità di cena in ristorante tipico.\n \nDopo essere andati a cena in un ristorante tipico Romano, la nostra guida autorizzata vi accompagnerà all'interno di uno dei monumenti più conservati al mondo dell'epoca imperiale II sec. d.c . l'antico mausoleo dell'imperatore Adriano trasformato poi dai papi in fortezza.\nAmmireremo gli antichi appartamenti papali, l'antico forziere dove si conservava il tesoro vaticano, la più bella vista di Roma illuminata, l' antico passaggio segreto dei papi che conduceva al palazzo apostolico e tanto altro ancora.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nColosseo Piramide Cestia San Paolo\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nPer visitare la basilica Patriarcale piu’ lontana dal centro di Roma potete scegliere il nostro tour con pulman privato e guida ufficiale.\nPartendo dal Colle Oppio dove si trova la famosa Domus Aurea di Nerone entreremo all’interno del Colosseo con prenotazione senza fila visitando i vari livelli di costruzione , spiegheremo l’arco di Costantino e prenderemo il nostro pulman privato per dirigerci verso il Circo Massimo ,Piramide Cestia unica in Europa del I Secolo a.c.\nPassando per la Via Ostiense indicando il luogo del martirio dell’apostolo Paolo visiteremo con auricolari e guida la Basilica di San Paolo fuori le mura dove si conserva il corpo dell’apostolo .\nUnico esempio di connubio tra il Neoclassicismo architettonico e arte decorativa musiva Romana e Bizantina\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTivoli, Villa Adriana e Villa D’Este\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nPercorrendo la Via Tiburtina Valeria, strada consolare dell'antica Roma si giunge a Tibur l’attuale Tivoli che secondo alcuni potrebbe essere stata fondata ancor prima di Roma.\n \nFin dall'epoca repubblicana famosa per le sfarzose ville di residenza estiva dei personaggi più illustri di Roma... Catullo, Mecenate, Orazio, Traiano e Adriano.\nProprio quest'ultimo ha voluto costruire un grandioso complesso di edifici, palazzi, terme, ninfei che rievocavano i suoi Viaggi in oriente.\nEntrando a Villa Adriana la nostra guida, attraverso il plastico, ricostruirà in tutto il suo splendore la maestosità della struttura antica.\nVedremo le biblioteche, il Pescile, Canopo, sala dei filosi, la casa dell'Imperatore, le terme e il tutto passeggiando in un contesto naturalistico.\nArrivando alle porte di Tivoli, con il nostro pullman privato scenderemo per entrare in una delle ville rinascimentali più importanti al mondo,\nVilla D’Este residenza privata del cardinale Oppolito d’Este figlio di Lucrezia Borgia.\nUn esempio di Villa Romana tra le più grandiose dove il genio dell'architetto Pirro Ligorio nel 1551, deViando l'acqua del fiume Aniene e approfittando del naturale dislivello del terreno, secondo il principio dei vasi comunicanti, pensò di incanalare l'acqua con un sistema di tubazioni nelle molteplici fontane generando così per pressione naturale innumerevoli giochi d'acqua .\npasseggeremo in un giardino incantato accompagnati dal suono musicale dell'acqua.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRoma illuminata\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nVolete scoprire la magica atmosfera di Roma di notte con pullman privato e guida a vostra disposizione?\nPartiremo dal teatro di Marcello per vedere il maestoso altare della patria illuminato,continueremo per Via dei fori imperiali per ammirare dall'alto il Colosseo, dove avremo l'opportunità di fermarci e fare le più belle foto.\n \nLa nostra visita prosegue verso la Basilica di San Giovanni, cattedrale di Roma, Santa Maria Maggiore con i mosaici del XIII sec, Piazza della Repubblica dove troveremo la fontana delle Naiadi chiamata anche fontana dell'amore, la chiesa di Santa Maria degli angeli progetto di Michelangelo, la celebre Via Veneto famosa per la dolce vita di Fellini con gli alberghi più lussuosi e i caffè più chic attraverseremo inoltre Villa Borghese, una delle ville più belle di Roma dove visse Paolina Bonaparte vi indicheremo la splendida Piazza del Popolo, lungo Tevere, passando dinanzi al palazzo di giustizia, Castel Sant’Angelo e la spettacolare Basilica di San Pietro, sormontata dalla splendida cupola illuminata, indicandovi l'appartamento papale.\nContinuando per il lungo Tevere vedremo i ponti di Roma, l'isola tiberina e torneremo al punto di partenza.\nper chi volesse, prenotando, vi daremo la possibilità di cenare nei nostri ristoranti tipici con musica.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nVisita ad Ostia Antica\n\nCosto: Euro 20     Durata : 2 ore\n(minimo 15 pax massimo 40 pax)\nPer molti  turisti che arrivano a Roma è quasi sconosciuta, ma realtà a pochi chilometri dalla città eterna,  potrete visitare ostia antica, una delle città portuali più antiche e conservate al mondo fondata nel sec iv a.c.\nla guida,esperta archeologa, ci porterà in un'altra epoca facendovi rivivere usi e costumi degli antichi Romani.\n \n \n\nanalizzeremo le tecniche del commercio dell'epoca, i luoghi che appartenevano alla vita quotidiana : il teatro, i bagni, le terme, gli alberghi, le osterie, i mitrei ben 18 , le domus con gli antichi mosaici perfettamente conservati e proseguendo nella visita scopriremo un passato che in realtà è sempre attuale......\n\n\n\n\n\nCastelli Romani \n\nSe gia' conoscete Roma e avete voglia di fare un itinerario alternativo La Roma Magic Tour Vi propone un'escurzione unica , dove Cultura e la Tradizione dell'arte Culinaria si fondono insieme .\nA pochi minuti da Roma Vi faremo Conoscere dei Paesi caratteristici noti come Castelli Romani circondati da 15.000 ettari di Parco incontaminato con i suoi due splendidi laghi Albano e Nemi di origine Vulcanica \nArriveremo con il nostro bus Privato e Guida Ufficiale a Castel Gandolfo Ammirando il lago di Albano con i suoi 3 km di superficie sormontato dalla famosa residenza estiva Papale sorta sopra la Villa Di Domiziano .\ninoltre Vedremo Marino conosciuto per il suo Vino eccellente , Frascati con l'imponente Villa Aldobrandini , Grottaferrata con l'antica Abbazia Di San Nilo (XI secolo) , Genzano famoso per il Pane e la Festa dell'infiorata , Ariccia con la Chiesa dell 'Assunta del Gian Lorenzo Bernini e Nemi con il suo incantevole lago e Palazzo Ruspoli , dove sosteremo per degustare i Dolci tipici locali e le rinomate Fragoline di bosco .\nTutto questo Verra' accompagnato con Pranzo o Cena in Suggestivo Ristorante Tipico \n\n€ 65,00 ( minimo 18 persone ) \n\n*Si organizzano anche tour Privati massimo 8 persone non Esitate a contattarci accontenteremo le Vostre richieste.\n\n\n\n")
1551
- expect(ps.segment).to eq(["Panoramica orientativa di Roma", "Costo: Euro 30     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Volete scoprire la magica atmosfera di Roma di notte con pullman privato e guida a vostra disposizione?", "Partiremo dal teatro di Marcello per vedere il maestoso altare della patria illuminato,continueremo per Via dei fori imperiali per ammirare dall'alto il Colosseo, dove avremo l'opportunità di fermarci e fare le più belle foto.", "La nostra visita prosegue verso la Basilica di San Giovanni, cattedrale di Roma, Santa Maria Maggiore con i mosaici del XIII sec, Piazza della Repubblica dove troveremo la fontana delle Naiadi chiamata anche fontana dell'amore,la chiesa di Santa Maria degli angeli progetto di Michelangelo, la celebre Via Veneto famosa per la dolce vita di Fellini con gli alberghi più lussuosi e i caffè più chic attraverseremo inoltre Villa Borghese, una delle ville più belle di Roma dove visse Paolina Bonaparte vi indicheremo la splendida Piazza del Popolo, lungo Tevere, pasSando dinanzi al palazzo di giustizia, Castel Sant’Angelo e la spettacolare Basilica di San Pietro, sormontata dalla splendida cupola illuminata, indicandovi l'appartamento papale.", "Continuando per il lungo Tevere vedremo i ponti di Roma, l'isola tiberina e torneremo al punto di partenza.", "per chi volesse, prenotando, vi daremo la possibilità di cenare nei nostri ristoranti tipici con musica.", "Durata:????", "Persone minimo: (min 15 pax max 40 pax)", "visita con pullman privato e guida ", "Importo: € 35", "visita con pullman privato guida e cena in ristorante tipico con musica", "importo: € 65", "Punto d’incontro: Teatro di Marcello ( Via del teatro di Marcello fermata bus turistici)", "Musei Vaticani, Cappella Sistina,San Pietro", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Vuoi conoscere le opere più celebri di Michelangelo e di Raffaello senza fare la fila e con prenotazione?", "Entra nella magia dei musei vaticani, affidati all'esperienza della nostre guide ufficiali di Roma che ti guideranno nelle gallerie più importanti del museo vaticano.", "Rimarrai affascinato dal cortile della pigna, opera del bramante", "(XVI)sec.", "Ti condurremo nel cortile ottagonale dove troverete “il laocoonte” una delle poche opere al mondo originali greche (I sec a.c),dalle quale lo stesso Michelangelo prese ispirazione per i suoi capolavori.", "Cammineremo sui mosaici originali Romani dell'epoca imperiale (II/III d.c).", "Inoltre visiteremo la sala della rotonda con le opere della colossale Domus Aurea( la casa di Nerone) la sala a croce greca,la sala dei candelabri,la galleria degli arazzi della scuola di Raffaello,galleria delle carte geografiche,le stanze di Raffaello e la straordinaria bellezza della cappella Sistina con gli affreschi tridimensionali di Michelangelo.", "Basilica di San Pietro", "Dopo aver spiegato l'architettura dei palazzi e della Piazza,ti accompagneremo all'interno dell'imponente Basilica ,costruita originariamente da Costantino sulla tomba dell'apostolo Pietro.", "Entrando perderai il vero senso della proporzione, ammireremo la prima pietà di Michelangelo(1499),la tomba di Giovanni paolo II.", "Il maestoso baldacchino del Bernini costruito con il bronzo fuso del pantheon,(II sec d.c)e la gloria del Bernini.", "Alzando gli occhi ci perderemo nell'immensità della cupola, costruita da Michelangelo, portando con voi le più belle fotografie in ricordo di questa visita indimenticabile.", "Basilica di San Pietro senza fila con guida e auricolari", "Durata: 2 ore", "Persone: min 15pax max 40", "Importo: € 20", "Musei vaticani cappella Sistina e stanze di Raffaello senza fila con guida e auricolari inclusi ingressi", "Durata: 3 ore", "Persone: min 15pax max 40", "Importo € 39 euro", "punto incontro: Obelisco Piazza s.", "Pietro", "Musei vaticani cappella Sistina e Basilica di San Pietro (senza stanze di raffaello)", "Durata: 3 ore ", "Persone: min 15pax max 40", "Importo: 45 euro", "Tour privato (itinerario a scelta 3 ore )", "Importo € 320 (max 5 persone)", "Importo € 50 a persona (da 6 persone a 14 persone )", "ingresso con prenotazione musei vaticani senza fila € 24", "punto d'incontro musei vaticani (Via leone IV civico 57)", "Colosseo Foro Romano San Pietro in Vincoli", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Una delle sette meraviglie del mondo, origine di qualsiasi stadio moderno,eretto da vespasiano ed ultimato in soli 8 anni da Tito.", "All' interno scopriremo insieme alle nostre guide ufficiali luoghi inediti senza fare fila e con prenotazione.", "Vi porteremo indietro di quasi 2000 anni nella colossale opera architettonica, facendovi rivivere le cruente lotte tra le belve feroci e i valorosi gladiatori.", "Colosseo", "una delle sette meraviglie del mondo, origine di qualsiasi stadio moderno,eretto da vespasiano ed ultimato in soli 8 anni da Tito.", "All' interno scopriremo insieme alle nostre guide ufficiali luoghi inediti senza fare fila e con prenotazione.", "Vi porteremo indietro di quasi 2000 anni nella colossale opera architettonica, facendovi rivivere le cruente lotte tra le belve feroci e i valorosi gladiatori.", "Foro Romano", "Proseguendo la nostra passeggiata archeologica,come nell'antica Roma, seguiremo le orme degli imperatori percorrendo la marcia triunfalis ,partendo dall'arco di Costantino, passando sotto l'arco di Tito, entreremo nel foro Romano, centro sociale, politico ed economico.", "Visiteremo il senato, dove nacque il diritto Romano, il lapis niger, famosa tomba di Romolo, celebre fondatore di Roma e", "San Pietro in vincoli", "La nostra visita continua all'interno della Basilica eudossiana nota come San Pietro in vincoli, per il vincolo delle catene di San Pietro, dove ammireremo la sconvolgente opera scultorica di Michelangelo :il Mosè.", "Piazze e Fontane di Roma", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Passeggiando tra le boutique più esclusive di Via Condotti,le nostre guide vi condurranno a Piazza di Spagna dove vi apparirà la scenografica scalinata di trinità dei monti, 101 gradini che hanno visto sfilare le più belle modelle del mondo.", "Dopo esserci dissetati con la fresca acqua della fontana della barcaccia di Pietro Bernini continueremo il nostro itinerario verso la fontana di Trevi unica al Mondo addossata ad un palazzo, dove il Dio oceano sul suo carro alato emerge con impeto dalle acque dominando la scena.", "L'apoteosi del naturalismo che la vede protagonista di un contesto urbanistico unico al Mondo.", "Proseguendo per Piazza Colonna ,vedremo l'area costituzionale, il parlamento, il palazzo del governo e inoltrandoci nei suggestivi vicoli di Roma all'improvviso ci apparirà Piazza della Rotonda con il maestoso pantheon, uno dei monumenti unici al mondo che mantiene intatta la struttura architettonica dell'epoca Adrianea (II sec d.c.)", "La nostra visita si concluderà a Piazza Navona, antico stadio di Domiziano,successivamente teatro di gare acquatiche dovebdomina lo scenario, la fontana dei 4 fiumi di g.", "Lorenzo Bernini.", "Le nostre guide,per recuperare le forze dopo la passeggiata, vi indicheranno la gelateria dove è stato inventato il famoso “tartufo di Roma”.", "Roma Cristiana", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Normalmente si pensa che la cattedrale di Roma sia San Pietro, in realtà è la Basilica di San Giovanni in Laterano poiché fu la prima eretta a Roma da Costantino imperatore cristiano nei terreni dei laterani (IV d.c).", "Le nostre guide esperte vi mostreranno la maestosa facciata in marmo travertino con le sue 15 grandi statue alte ben 7 metri.", "Entrando nella Basilica passeremo a lato della porta Santa, vedremo la ricostruzione borrominiana", "(XVII) sec.", ", il mosaico del XIII sec, l'organo più grande di Roma e il luogo dove secondo la tradizione si conservano le tEste di San Pietro e Paolo e tanto altro ancora.", "La visita continuerà all'interno dell'edificio dove si conserva la scala Santa che secondo la tradizione Gesù salì dopo la flagellazione.", "Vi daremo anche l'opportunità di poterla salire in ginocchio per guadagnare l'indulgenza.", "Proseguiremo per Via Merulana fino ad arrivare a Santa Maria Maggiore, come fa il Santo padre il giorno del corpus domini.", "Santa Maria maggiore unica Basilica patriarcale che mantiene intatta la struttura originaria del sec.", "(V d.c.) eretta nel luogo dove avvenne il miracolo della neve caduta il 5 agosto.", "Osserveremo all'intermo i mosaici, unici al mondo per la loro bellezza e antichità , alzando gli occhi vedrete lo splendore del soffitto con girali e rose in oro massiccio.", "La visita terminerà dinanzi alle reliquie delle mangiatoia di Gesù.", "Roma sotterranea", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Le nostre guide specializzate in archeologia,  vi accompagneranno a scoprire i misteri di Roma sotterranea.", "Inizieremo la visita nella Basilica di San Clemente uno dei più straordinari e ben conservati palinsesti monumentali della città.", "Scenderemo al livello sotterraneo,originario della primitiva domus II sec.", "vedendo uno degli esempi più importanti di ara sacrificale di culto mitraico.", "Risalendo troveremo la chiesa paleocristiana del IV sec.", "che si conservò fino all'XI sec.", "dove potremmo ammirare gli affreschi coevi della leggenda di sisinnio.", "Uscendo dalla Basilica saliremo sul nostro pullman privato, passando accanto alle famose terme di Caracalla e proseguendo per la Via Appia antica ,strada consolare del IV sec a.c. ,vi mostreremo dove avvenne l'episodio del quo vadis, fino ad arrivare alle catacombe, chilometri di gallerie sotterranee scavate da primi cristiani all'epoca delle persecuzioni.", "Visita a Castel Sant'Angelo", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Roma Magic Tour vi propone l'estate Romana con visita notturna inedita di Castel Sant'Angelo e con possibilità di cena in ristorante tipico.", "Dopo essere andati a cena in un ristorante tipico Romano, la nostra guida autorizzata vi accompagnerà all'interno di uno dei monumenti più conservati al mondo dell'epoca imperiale II sec.", "d.c .", "l'antico mausoleo dell'imperatore Adriano trasformato poi dai papi in fortezza.", "Ammireremo gli antichi appartamenti papali, l'antico forziere dove si conservava il tesoro vaticano, la più bella vista di Roma illuminata, l' antico passaggio segreto dei papi che conduceva al palazzo apostolico e tanto altro ancora.", "Colosseo Piramide Cestia San Paolo", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Per visitare la basilica Patriarcale piu’ lontana dal centro di Roma potete scegliere il nostro tour con pulman privato e guida ufficiale.", "Partendo dal Colle Oppio dove si trova la famosa Domus Aurea di Nerone entreremo all’interno del Colosseo con prenotazione senza fila visitando i vari livelli di costruzione , spiegheremo l’arco di Costantino e prenderemo il nostro pulman privato per dirigerci verso il Circo Massimo ,Piramide Cestia unica in Europa del I Secolo a.c.", "Passando per la Via Ostiense indicando il luogo del martirio dell’apostolo Paolo visiteremo con auricolari e guida la Basilica di San Paolo fuori le mura dove si conserva il corpo dell’apostolo .", "Unico esempio di connubio tra il Neoclassicismo architettonico e arte decorativa musiva Romana e Bizantina", "Tivoli, Villa Adriana e Villa D’Este", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Percorrendo la Via Tiburtina Valeria, strada consolare dell'antica Roma si giunge a Tibur l’attuale Tivoli che secondo alcuni potrebbe essere stata fondata ancor prima di Roma.", "Fin dall'epoca repubblicana famosa per le sfarzose ville di residenza estiva dei personaggi più illustri di Roma...", "Catullo, Mecenate, Orazio, Traiano e Adriano.", "Proprio quest'ultimo ha voluto costruire un grandioso complesso di edifici, palazzi, terme, ninfei che rievocavano i suoi Viaggi in oriente.", "Entrando a Villa Adriana la nostra guida, attraverso il plastico, ricostruirà in tutto il suo splendore la maestosità della struttura antica.", "Vedremo le biblioteche, il Pescile, Canopo, sala dei filosi, la casa dell'Imperatore, le terme e il tutto passeggiando in un contesto naturalistico.", "Arrivando alle porte di Tivoli, con il nostro pullman privato scenderemo per entrare in una delle ville rinascimentali più importanti al mondo,", "Villa D’Este residenza privata del cardinale Oppolito d’Este figlio di Lucrezia Borgia.", "Un esempio di Villa Romana tra le più grandiose dove il genio dell'architetto Pirro Ligorio nel 1551, deViando l'acqua del fiume Aniene e approfittando del naturale dislivello del terreno, secondo il principio dei vasi comunicanti, pensò di incanalare l'acqua con un sistema di tubazioni nelle molteplici fontane generando così per pressione naturale innumerevoli giochi d'acqua .", "passeggeremo in un giardino incantato accompagnati dal suono musicale dell'acqua.", "Roma illuminata", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Volete scoprire la magica atmosfera di Roma di notte con pullman privato e guida a vostra disposizione?", "Partiremo dal teatro di Marcello per vedere il maestoso altare della patria illuminato,continueremo per Via dei fori imperiali per ammirare dall'alto il Colosseo, dove avremo l'opportunità di fermarci e fare le più belle foto.", "La nostra visita prosegue verso la Basilica di San Giovanni, cattedrale di Roma, Santa Maria Maggiore con i mosaici del XIII sec, Piazza della Repubblica dove troveremo la fontana delle Naiadi chiamata anche fontana dell'amore, la chiesa di Santa Maria degli angeli progetto di Michelangelo, la celebre Via Veneto famosa per la dolce vita di Fellini con gli alberghi più lussuosi e i caffè più chic attraverseremo inoltre Villa Borghese, una delle ville più belle di Roma dove visse Paolina Bonaparte vi indicheremo la splendida Piazza del Popolo, lungo Tevere, passando dinanzi al palazzo di giustizia, Castel Sant’Angelo e la spettacolare Basilica di San Pietro, sormontata dalla splendida cupola illuminata, indicandovi l'appartamento papale.", "Continuando per il lungo Tevere vedremo i ponti di Roma, l'isola tiberina e torneremo al punto di partenza.", "per chi volesse, prenotando, vi daremo la possibilità di cenare nei nostri ristoranti tipici con musica.", "Visita ad Ostia Antica", "Costo: Euro 20     Durata : 2 ore", "(minimo 15 pax massimo 40 pax)", "Per molti  turisti che arrivano a Roma è quasi sconosciuta, ma realtà a pochi chilometri dalla città eterna,  potrete visitare ostia antica, una delle città portuali più antiche e conservate al mondo fondata nel sec iv a.c.", "la guida,esperta archeologa, ci porterà in un'altra epoca facendovi rivivere usi e costumi degli antichi Romani.", "analizzeremo le tecniche del commercio dell'epoca, i luoghi che appartenevano alla vita quotidiana : il teatro, i bagni, le terme, gli alberghi, le osterie, i mitrei ben 18 , le domus con gli antichi mosaici perfettamente conservati e proseguendo nella visita scopriremo un passato che in realtà è sempre attuale", "Castelli Romani", "Se gia' conoscete Roma e avete voglia di fare un itinerario alternativo La Roma Magic Tour Vi propone un'escurzione unica , dove Cultura e la Tradizione dell'arte Culinaria si fondono insieme .", "A pochi minuti da Roma Vi faremo Conoscere dei Paesi caratteristici noti come Castelli Romani circondati da 15.000 ettari di Parco incontaminato con i suoi due splendidi laghi Albano e Nemi di origine Vulcanica", "Arriveremo con il nostro bus Privato e Guida Ufficiale a Castel Gandolfo Ammirando il lago di Albano con i suoi 3 km di superficie sormontato dalla famosa residenza estiva Papale sorta sopra la Villa Di Domiziano .", "inoltre Vedremo Marino conosciuto per il suo Vino eccellente , Frascati con l'imponente Villa Aldobrandini , Grottaferrata con l'antica Abbazia Di San Nilo (XI secolo) , Genzano famoso per il Pane e la Festa dell'infiorata , Ariccia con la Chiesa dell 'Assunta del Gian Lorenzo Bernini e Nemi con il suo incantevole lago e Palazzo Ruspoli , dove sosteremo per degustare i Dolci tipici locali e le rinomate Fragoline di bosco .", "Tutto questo Verra' accompagnato con Pranzo o Cena in Suggestivo Ristorante Tipico", "€ 65,00 ( minimo 18 persone )", "*Si organizzano anche tour Privati massimo 8 persone non Esitate a contattarci accontenteremo le Vostre richieste."])
1549
+ ps = PragmaticSegmenter::Segmenter.new(text: "SEC. 1262 AUTHORIZATION OF APPROPRIATIONS.")
1550
+ expect(ps.segment).to eq(["SEC. 1262 AUTHORIZATION OF APPROPRIATIONS."])
1552
1551
  end
1553
1552
  end
1554
1553
  end