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).