This is what is known about the halting problem and semi-decidability :-
The halting problem says that for a given input x and a machine H, we can't say whether the machine H halts or not on input x.
A language is said to be Semi-decidable if there exists a Turing machine which halts if a word belongs to the language (YES cases) and may reject or go into infinite loop if the word doesn't belong to the language (NO case).
Now, in the halting problem we can't say whether the machine will halt even if the input belongs to the language (YES cases). Then how is it Semi-decidable? I think it should be non-recursively enumerable or undecidable.