The English prefixes bi– and semi– are often mixed up by native speakers. A semi-annual reading of this lesson will help more than a bi-annual one.
Bi– comes from the Latin meaning two. When used with a temporal word, bi- means "every two" or "every other."
Semi– comes from the Latin meaning half. When used with a temporal word, semi– means "twice."
The Bottom Line
The confusion between bi– and semi– occurs because both prefixes are related to the concept of two. But bi– means something that happens every other (week, month…), or every two (weeks, months…), while semi– indicates something that happens twice every (week, month) or every half (week, month).